-- This is el_index truncated to 60 bytes to allow for sortable queries that
-- aren't supported by a partial index.
- -- @todo Drop the default once this is deployed everywhere and code is populating it.
- el_index_60 varbinary(60) NOT NULL default ''
+ el_index_60 varbinary(60) NOT NULL
) /*$wgDBTableOptions*/;
-- Forward index, for page edit, save
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);
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+
CREATE INDEX /*i*/site_ids_site ON /*_*/site_identifiers (si_site);
CREATE INDEX /*i*/site_ids_key ON /*_*/site_identifiers (si_key);
+-- Table defining tag names for IDs. Also stores hit counts to avoid expensive queries on change_tag
+CREATE TABLE /*_*/change_tag_def (
+ -- Numerical ID of the tag (ct_tag_id refers to this)
+ ctd_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ -- Symbolic name of the tag (what would previously be put in ct_tag)
+ ctd_name varbinary(255) NOT NULL,
+ -- Whether this tag was defined manually by a privileged user using Special:Tags
+ ctd_user_defined tinyint(1) NOT NULL,
+ -- Number of times this tag was used
+ ctd_count bigint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/ctd_name ON /*_*/change_tag_def (ctd_name);
+CREATE INDEX /*i*/ctd_count ON /*_*/change_tag_def (ctd_count);
+CREATE INDEX /*i*/ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined);
+
-- vim: sw=2 sts=2 et