--- /dev/null
+--
+-- Create the new redirect table.
+-- For each redirect, this table contains exactly one row defining its target
+--
+CREATE TABLE /*$wgDBprefix*/redirect (
+ -- Key to the page_id of the redirect page
+ rd_from int(8) unsigned NOT NULL default '0',
+
+ -- Key to page_namespace/page_title of the target page.
+ -- The target page may or may not exist, and due to renames
+ -- and deletions may refer to different page records as time
+ -- goes by.
+ rd_namespace int NOT NULL default '0',
+ rd_title varchar(255) binary NOT NULL default '',
+
+ PRIMARY KEY rd_from (rd_from),
+ KEY rd_ns_title (rd_namespace,rd_title,rd_from)
+) TYPE=InnoDB;
+
+-- Import existing redirects
+-- Using ignore because some of the redirect pages contain more than one link
+INSERT IGNORE
+ INTO /*$wgDBprefix*/redirect (rd_from,rd_namespace,rd_title)
+ SELECT pl_from,pl_namespace,pl_title
+ FROM /*$wgDBprefix*/pagelinks, /*$wgDBprefix*/page
+ WHERE pl_from=page_id AND page_is_redirect=1;
+
+
UNIQUE KEY ( qci_type )
) TYPE=InnoDB;
+
+-- For each redirect, this table contains exactly one row defining its target
+CREATE TABLE /*$wgDBprefix*/redirect (
+ -- Key to the page_id of the redirect page
+ rd_from int(8) unsigned NOT NULL default '0',
+
+ -- Key to page_namespace/page_title of the target page.
+ -- The target page may or may not exist, and due to renames
+ -- and deletions may refer to different page records as time
+ -- goes by.
+ rd_namespace int NOT NULL default '0',
+ rd_title varchar(255) binary NOT NULL default '',
+
+ PRIMARY KEY rd_from (rd_from),
+ KEY rd_ns_title (rd_namespace,rd_title,rd_from)
+) TYPE=InnoDB, DEFAULT CHARSET=utf8;
) TYPE=InnoDB;
+--
+-- Create the new redirect table.
+-- For each redirect, this table contains exactly one row defining its target
+--
+CREATE TABLE /*$wgDBprefix*/redirect (
+ -- Key to the page_id of the redirect page
+ rd_from int(8) unsigned NOT NULL default '0',
+
+ -- Key to page_namespace/page_title of the target page.
+ -- The target page may or may not exist, and due to renames
+ -- and deletions may refer to different page records as time
+ -- goes by.
+ rd_namespace int NOT NULL default '0',
+ rd_title varchar(255) binary NOT NULL default '',
+
+ PRIMARY KEY rd_from (rd_from),
+ KEY rd_ns_title (rd_namespace,rd_title,rd_from)
+) TYPE=InnoDB;
+
-- vim: sw=2 sts=2 et
array( 'langlinks', 'patch-langlinks.sql' ),
array( 'querycache_info', 'patch-querycacheinfo.sql' ),
array( 'filearchive', 'patch-filearchive.sql' ),
+ array( 'redirect', 'patch-redirect.sql' ),
);
$wgNewFields = array(