--- /dev/null
+-- \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
) /*$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);
--
) /*$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);
--
) /*$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);
--
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(
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