* Added 'redirect' table - contains unique targets of redirects
authorYuri Astrakhan <yurik@users.mediawiki.org>
Wed, 25 Oct 2006 07:26:59 +0000 (07:26 +0000)
committerYuri Astrakhan <yurik@users.mediawiki.org>
Wed, 25 Oct 2006 07:26:59 +0000 (07:26 +0000)
maintenance/archives/patch-redirect.sql [new file with mode: 0644]
maintenance/mysql5/tables.sql
maintenance/tables.sql
maintenance/updaters.inc

diff --git a/maintenance/archives/patch-redirect.sql b/maintenance/archives/patch-redirect.sql
new file mode 100644 (file)
index 0000000..d377f1b
--- /dev/null
@@ -0,0 +1,28 @@
+--
+-- 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;
+
+
index 9682ecd..f25988e 100644 (file)
@@ -1024,3 +1024,19 @@ CREATE TABLE /*$wgDBprefix*/querycache_info (
        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;
index 9b2955d..1c7905b 100644 (file)
@@ -1016,4 +1016,23 @@ CREATE TABLE /*$wgDBprefix*/querycache_info (
 
 ) 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
index a63307b..6985a44 100644 (file)
@@ -30,6 +30,7 @@ $wgNewTables = array(
        array( 'langlinks',     'patch-langlinks.sql' ),
        array( 'querycache_info', 'patch-querycacheinfo.sql' ),
        array( 'filearchive',   'patch-filearchive.sql' ),
+       array( 'redirect',      'patch-redirect.sql' ),
 );
 
 $wgNewFields = array(