--- /dev/null
+--
+-- patch-pl-tl-il-unique-index.sql
+--
+-- Make reorderings of UNIQUE indices UNIQUE as well
+
+DROP INDEX /*i*/pl_namespace ON /*_*/pagelinks;
+CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace, pl_title, pl_from);
+DROP INDEX /*i*/tl_namespace ON /*_*/templatelinks;
+CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace, tl_title, tl_from);
+DROP INDEX /*i*/il_to ON /*_*/imagelinks;
+CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to, il_from);
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
-CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
--
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
-CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
--
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
-CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
--
array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
array( 'do_active_users_init' ),
array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.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