// 1.28
[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
+ [ 'doRevisionPageRevIndexNonUnique' ]
];
}
'Making user_id unsigned int'
);
}
+
+ protected function doRevisionPageRevIndexNonUnique() {
+ if ( !$this->doTable( 'revision' ) ) {
+ return true;
+ } elseif ( !$this->db->indexExists( 'revision', 'rev_page_id' ) ) {
+ $this->output( "...rev_page_id index not found on revision.\n" );
+ return true;
+ }
+
+ if ( !$this->db->indexUnique( 'revision', 'rev_page_id' ) ) {
+ $this->output( "...rev_page_id index already non-unique.\n" );
+ return true;
+ }
+
+ return $this->applyPatch(
+ 'patch-revision-page-rev-index-nonunique.sql',
+ false,
+ 'Making rev_page_id index non-unique'
+ );
+ }
}
--- /dev/null
+-- Makes rev_page_id index non-unique
+ALTER TABLE /*_*/revision
+DROP INDEX /*i*/rev_page_id;
+
+CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
-- In case tables are created as MyISAM, use row hints for MySQL <5.0 to avoid 4GB limit
-CREATE UNIQUE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
+CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);