(bug 16645) Making the pl_namespace, tl_namespace and il_to indices UNIQUE, just...
authorRoan Kattouw <catrope@users.mediawiki.org>
Fri, 16 Jan 2009 23:15:04 +0000 (23:15 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Fri, 16 Jan 2009 23:15:04 +0000 (23:15 +0000)
maintenance/archives/patch-pl-tl-il-unique.sql [new file with mode: 0644]
maintenance/tables.sql
maintenance/updaters.inc

diff --git a/maintenance/archives/patch-pl-tl-il-unique.sql b/maintenance/archives/patch-pl-tl-il-unique.sql
new file mode 100644 (file)
index 0000000..0dd452f
--- /dev/null
@@ -0,0 +1,11 @@
+-- \r
+-- patch-pl-tl-il-unique-index.sql\r
+-- \r
+-- Make reorderings of UNIQUE indices UNIQUE as well\r
+\r
+DROP INDEX pl_namespace ON /*_*/pagelinks;\r
+CREATE UNIQUE INDEX pl_namespace ON /*_*/pagelinks (pl_namespace, pl_title, pl_from);\r
+DROP INDEX tl_namespace ON /*_*/templatelinks;\r
+CREATE UNIQUE INDEX tl_namespace ON /*_*/templatelinks (tl_namespace, tl_title, tl_from);\r
+DROP INDEX il_to ON /*_*/imagelinks;\r
+CREATE UNIQUE INDEX il_to ON /*_*/imagelinks (il_to, il_from);\r
index a3b5b7a..183e3b2 100644 (file)
@@ -408,7 +408,7 @@ CREATE TABLE /*_*/pagelinks (
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
-CREATE INDEX pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE UNIQUE INDEX pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
 
 
 --
@@ -427,7 +427,7 @@ CREATE TABLE /*_*/templatelinks (
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
-CREATE INDEX tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE UNIQUE INDEX tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
 
 
 --
@@ -446,7 +446,7 @@ CREATE TABLE /*_*/imagelinks (
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX il_from ON /*_*/imagelinks (il_from,il_to);
-CREATE INDEX il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE UNIQUE INDEX il_to ON /*_*/imagelinks (il_to,il_from);
 
 
 --
index 094b149..91ec8e8 100644 (file)
@@ -150,6 +150,7 @@ $wgUpdates = array(
                array( 'do_active_users_init' ),
                array( 'add_field', 'ipblocks',     'ipb_allow_usertalk',  'patch-ipb_allow_usertalk.sql' ),
                array( 'add_index', 'user_newtalk', 'un_user_id', 'patch-index-renames.sql' ),
+               array( 'do_unique_pl_tl_il' ),
        ),
 
        'sqlite' => array(
@@ -1266,6 +1267,17 @@ function sqlite_initial_indexes() {
        echo "done\n";
 }
 
+function do_unique_pl_tl_il() {
+       global $wgDatabase;
+       $info = $wgDatabase->indexInfo( 'pagelinks', 'pl_namespace' );
+       if( !$info->Non_unique ) {
+               echo "...pl_namespace, tl_namespace, il_to indices are already UNIQUE.\n";
+       } else {
+               echo "Making pl_namespace, tl_namespace and il_to indices UNIQUE... ";
+               dbsource( archive( 'patch-pl-tl-il-unique.sql' ), $wgDatabase );
+               echo "ok\n";
+       }
+}
 
 /***********************************************************************
  * Start PG crap