-- If the user is an anonymous user their IP address is stored here
-- since the user_id of 0 is ambiguous
user_ip varbinary(40) NOT NULL default '',
+ -- The highest timestamp of revisions of the talk page viewed
+ -- by this user
+ user_last_timestamp binary(14) NOT NULL default '',
INDEX user_id (user_id),
INDEX user_ip (user_ip)
-- Not yet used; reserved for future changes to the deletion system.
rev_deleted tinyint unsigned NOT NULL default '0',
- -- Was this edit made by a bot (and marked as such)?
- rev_bot tinyint unsigned NOT NULL default '0',
-
-- Length of this revision in bytes
rev_len int unsigned,
INDEX rev_timestamp (rev_timestamp),
INDEX page_timestamp (rev_page,rev_timestamp),
INDEX user_timestamp (rev_user,rev_timestamp),
- INDEX usertext_timestamp (rev_user_text,rev_timestamp),
- INDEX page_user_timestamp (rev_page,rev_user,rev_timestamp)
+ INDEX usertext_timestamp (rev_user_text,rev_timestamp)
) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
-- In case tables are created as MyISAM, use row hints for MySQL <5.0 to avoid 4GB limit
-- Will be NULL for pages deleted prior to 1.11.
ar_page_id int unsigned,
+ -- Original previous revision
+ ar_parent_id int unsigned default NULL,
+
KEY name_title_timestamp (ar_namespace,ar_title,ar_timestamp),
KEY usertext_timestamp (ar_user_text,ar_timestamp)
) /*$wgDBTableOptions*/;
+--
+-- Track all existing categories. Something is a category if 1) it has an en-
+-- try somewhere in categorylinks, or 2) it once did. Categories might not
+-- have corresponding pages, so they need to be tracked separately.
+--
+CREATE TABLE /*$wgDBprefix*/category (
+ -- Primary key
+ cat_id int unsigned NOT NULL auto_increment,
+
+ -- Name of the category, in the same form as page_title (with underscores).
+ -- If there is a category page corresponding to this category, by definition,
+ -- it has this name (in the Category namespace).
+ cat_title varchar(255) binary NOT NULL,
+
+ -- The numbers of member pages (including categories and media), subcatego-
+ -- ries, and Image: namespace members, respectively. These are signed to
+ -- make underflow more obvious. We make the first number include the second
+ -- two for better sorting: subtracting for display is easy, adding for order-
+ -- ing is not.
+ cat_pages int signed NOT NULL default 0,
+ cat_subcats int signed NOT NULL default 0,
+ cat_files int signed NOT NULL default 0,
+
+ -- Reserved for future use
+ cat_hidden tinyint unsigned NOT NULL default 0,
+
+ PRIMARY KEY (cat_id),
+ UNIQUE KEY (cat_title),
+
+ -- For Special:Mostlinkedcategories
+ KEY (cat_pages)
+) /*$wgDBTableOptions*/;
+
--
-- Track links to external URLs
--
-- User ID who made the block.
ipb_by int unsigned NOT NULL default '0',
+ -- User name of blocker
+ ipb_by_text varchar(255) binary NOT NULL default '',
+
-- Text comment made by blocker.
ipb_reason tinyblob NOT NULL,
INDEX (fa_name, fa_timestamp), -- pick out by image name
INDEX (fa_storage_group, fa_storage_key), -- pick out dupe files
INDEX (fa_deleted_timestamp), -- sort by deletion time
- INDEX (fa_deleted_user) -- sort by deleter
+ INDEX fa_user_timestamp (fa_user_text,fa_timestamp) -- sort by uploader
) /*$wgDBTableOptions*/;
) /*$wgDBTableOptions*/;
CREATE TABLE /*$wgDBprefix*/logging (
+ -- Log ID, for referring to this specific log entry, probably for deletion and such.
+ log_id int unsigned NOT NULL auto_increment,
+
-- Symbolic keys for the general log type and the action type
-- within the log. The output format will be controlled by the
-- action field, but only the type controls categorization.
-- LF separated list of miscellaneous parameters
log_params blob NOT NULL,
- -- Log ID, for referring to this specific log entry, probably for deletion and such.
- log_id int unsigned NOT NULL auto_increment,
-
-- rev_deleted for logs
log_deleted tinyint unsigned NOT NULL default '0',
CREATE TABLE /*$wgDBprefix*/trackbacks (
tb_id int auto_increment,
- tb_page int REFERENCES page(page_id) ON DELETE CASCADE,
+ tb_page int REFERENCES /*$wgDBprefix*/page(page_id) ON DELETE CASCADE,
tb_title varchar(255) NOT NULL,
tb_url blob NOT NULL,
tb_ex text,
KEY pr_cascade (pr_cascade)
) /*$wgDBTableOptions*/;
+-- Protected titles - nonexistent pages that have been protected
+CREATE TABLE /*$wgDBprefix*/protected_titles (
+ pt_namespace int NOT NULL,
+ pt_title varchar(255) binary NOT NULL,
+ pt_user int unsigned NOT NULL,
+ pt_reason tinyblob,
+ pt_timestamp binary(14) NOT NULL,
+ pt_expiry varbinary(14) NOT NULL default '',
+ pt_create_perm varbinary(60) NOT NULL,
+ PRIMARY KEY (pt_namespace,pt_title),
+ KEY pt_timestamp (pt_timestamp)
+) /*$wgDBTableOptions*/;
+
+-- Name/value pairs indexed by page_id
+CREATE TABLE /*$wgDBprefix*/page_props (
+ pp_page int NOT NULL,
+ pp_propname varbinary(60) NOT NULL,
+ pp_value blob NOT NULL,
+
+ PRIMARY KEY (pp_page,pp_propname)
+) /*$wgDBTableOptions*/;
+
+-- A table to log updates, one text key row per update.
+CREATE TABLE /*$wgDBprefix*/updatelog (
+ ul_key varchar(255) NOT NULL,
+ PRIMARY KEY (ul_key)
+) /*$wgDBTableOptions*/;
+
-- vim: sw=2 sts=2 et