From: Amir Sarabadani Date: Fri, 11 May 2018 19:16:37 +0000 (+0200) Subject: Add ct_tag_id field to change_tag table X-Git-Tag: 1.34.0-rc.0~5378^2 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=f45314cd4f1074bb42139bc9d9b0dbff0c6db5c4;p=lhc%2Fweb%2Fwiklou.git Add ct_tag_id field to change_tag table Part of normalizing the table Bug: T193867 Change-Id: I8c38e673aab14c5b87e5501da1a752c5bd4709c8 --- diff --git a/includes/installer/MssqlUpdater.php b/includes/installer/MssqlUpdater.php index cc48e2f89e..44b4e30cc2 100644 --- a/includes/installer/MssqlUpdater.php +++ b/includes/installer/MssqlUpdater.php @@ -135,6 +135,7 @@ class MssqlUpdater extends DatabaseUpdater { [ 'modifyfield', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60-drop-default.sql' ], [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], + [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], ]; } diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index 9365e98796..d70edea1d6 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -355,6 +355,7 @@ class MysqlUpdater extends DatabaseUpdater { [ 'modifyfield', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60-drop-default.sql' ], [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], + [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], ]; } diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index 34d81a7a82..965187a45a 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -152,6 +152,7 @@ class OracleUpdater extends DatabaseUpdater { [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ], [ 'populateExternallinksIndex60' ], [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], + [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], // KEEP THIS AT THE BOTTOM!! [ 'doRebuildDuplicateFunction' ], diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index 6263edb0ce..49419ea978 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -575,6 +575,13 @@ class PostgresUpdater extends DatabaseUpdater { [ 'populateExternallinksIndex60' ], [ 'dropDefault', 'externallinks', 'el_index_60' ], [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], + [ 'addPgField', 'change_tag', 'ct_tag_id', 'INTEGER NULL' ], + [ + 'addPgIndex', + 'change_tag', + 'change_tag_tag_id_id', + '( ct_tag_id, ct_rc_id, ct_rev_id, ct_log_id )' + ], ]; } diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index 961cb842a9..2b27d37bf4 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -219,6 +219,7 @@ class SqliteUpdater extends DatabaseUpdater { [ 'modifyfield', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60-drop-default.sql' ], [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], + [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], ]; } diff --git a/maintenance/archives/patch-change_tag-tag_id.sql b/maintenance/archives/patch-change_tag-tag_id.sql new file mode 100644 index 0000000000..15b1c95845 --- /dev/null +++ b/maintenance/archives/patch-change_tag-tag_id.sql @@ -0,0 +1,7 @@ +-- +-- Add ctd_tag_id to change_tag table to normalize it +-- +ALTER TABLE /*_*/change_tag + ADD COLUMN ct_tag_id int unsigned NULL; + +CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); diff --git a/maintenance/mssql/archives/patch-change_tag-tag_id.sql b/maintenance/mssql/archives/patch-change_tag-tag_id.sql new file mode 100644 index 0000000000..869ee11843 --- /dev/null +++ b/maintenance/mssql/archives/patch-change_tag-tag_id.sql @@ -0,0 +1,7 @@ +-- +-- Add ctd_tag_id to change_tag table to normalize it +-- +ALTER TABLE /*_*/change_tag + ADD COLUMN ct_tag_id int NULL CONSTRAINT ctd_tag_id__fk FOREIGN KEY REFERENCES /*_*/change_tag_def(ctd_id); + +CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); diff --git a/maintenance/mssql/tables.sql b/maintenance/mssql/tables.sql index 315cb20ce7..fbe207d174 100644 --- a/maintenance/mssql/tables.sql +++ b/maintenance/mssql/tables.sql @@ -1403,7 +1403,9 @@ CREATE TABLE /*_*/change_tag ( -- Tag applied ct_tag nvarchar(255) NOT NULL, -- Parameters for the tag, presently unused - ct_params nvarchar(max) NULL + ct_params nvarchar(max) NULL, + -- Foreign key to change_tag_def row + ct_tag_id int NULL CONSTRAINT ctd_tag_id__fk FOREIGN KEY REFERENCES /*_*/change_tag_def(ctd_id) ); CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag); @@ -1411,7 +1413,7 @@ CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag); -- Covering index, so we can pull all the info only out of the index. CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id); - +CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); -- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT -- that only works on MySQL 4.1+ diff --git a/maintenance/oracle/archives/patch-change_tag-tag_id.sql b/maintenance/oracle/archives/patch-change_tag-tag_id.sql new file mode 100644 index 0000000000..1f4067c48e --- /dev/null +++ b/maintenance/oracle/archives/patch-change_tag-tag_id.sql @@ -0,0 +1,6 @@ +-- +-- Add ctd_tag_id to change_tag table to normalize it +-- +ALTER TABLE &mw_prefix.change_tag ADD ( ct_tag_id NUMBER DEFAULT NULL ); + +CREATE INDEX &mw_prefix.change_tag_i02 ON &mw_prefix.change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql index df74f649f5..6e36752bbe 100644 --- a/maintenance/oracle/tables.sql +++ b/maintenance/oracle/tables.sql @@ -942,13 +942,15 @@ CREATE TABLE &mw_prefix.change_tag ( ct_log_id NUMBER NULL, ct_rev_id NUMBER NULL, ct_tag VARCHAR2(255) NOT NULL, - ct_params BLOB NULL + ct_params BLOB NULL, + ct_tag_id NUMBER NULL, ); ALTER TABLE &mw_prefix.change_tag ADD CONSTRAINT &mw_prefix.change_tag_pk PRIMARY KEY (ct_id); CREATE UNIQUE INDEX &mw_prefix.change_tag_u01 ON &mw_prefix.change_tag (ct_rc_id,ct_tag); CREATE UNIQUE INDEX &mw_prefix.change_tag_u02 ON &mw_prefix.change_tag (ct_log_id,ct_tag); CREATE UNIQUE INDEX &mw_prefix.change_tag_u03 ON &mw_prefix.change_tag (ct_rev_id,ct_tag); CREATE INDEX &mw_prefix.change_tag_i01 ON &mw_prefix.change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id); +CREATE INDEX &mw_prefix.change_tag_i02 ON &mw_prefix.change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); CREATE TABLE &mw_prefix.tag_summary ( ts_id NUMBER NOT NULL, diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index 492a0d5a4c..cf0eb2f2ac 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -807,13 +807,15 @@ CREATE TABLE change_tag ( ct_log_id INTEGER NULL, ct_rev_id INTEGER NULL, ct_tag TEXT NOT NULL, - ct_params TEXT NULL + ct_params TEXT NULL, + ct_tag_id INTEGER NULL ); ALTER SEQUENCE change_tag_ct_id_seq OWNED BY change_tag.ct_id; CREATE UNIQUE INDEX change_tag_rc_tag ON change_tag(ct_rc_id,ct_tag); CREATE UNIQUE INDEX change_tag_log_tag ON change_tag(ct_log_id,ct_tag); CREATE UNIQUE INDEX change_tag_rev_tag ON change_tag(ct_rev_id,ct_tag); CREATE INDEX change_tag_tag_id ON change_tag(ct_tag,ct_rc_id,ct_rev_id,ct_log_id); +CREATE INDEX change_tag_tag_id_id ON change_tag(ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); CREATE SEQUENCE tag_summary_ts_id_seq; CREATE TABLE tag_summary ( diff --git a/maintenance/tables.sql b/maintenance/tables.sql index ed3bd43991..53c15290bd 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -1842,10 +1842,12 @@ CREATE TABLE /*_*/change_tag ( ct_log_id int unsigned NULL, -- REVID for the change ct_rev_id int unsigned NULL, - -- Tag applied + -- Tag applied, this will go away and be replaced with ct_tag_id ct_tag varchar(255) NOT NULL, -- Parameters for the tag; used by some extensions - ct_params blob NULL + ct_params blob NULL, + -- Foreign key to change_tag_def row, this will be "NOT NULL" once populated + ct_tag_id int unsigned NULL ) /*$wgDBTableOptions*/; CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag); @@ -1853,7 +1855,7 @@ CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag); -- Covering index, so we can pull all the info only out of the index. CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id); - +CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id); -- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT -- that only works on MySQL 4.1+