From: Tim Starling Date: Thu, 15 Jan 2009 14:20:28 +0000 (+0000) Subject: * Preserve usertext_timestamp index name for MySQL, prefix it for SQLite. Issues... X-Git-Tag: 1.31.0-rc.0~43406 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/journal.php?a=commitdiff_plain;h=f058162bc556b35f60e575f8c9a81f8e09028534;p=lhc%2Fweb%2Fwiklou.git * Preserve usertext_timestamp index name for MySQL, prefix it for SQLite. Issues remain on the experimental non-installable DBMSes. * Clean up some E_STRICT issues --- diff --git a/includes/db/Database.php b/includes/db/Database.php index b1442e7d55..a09bcd3752 100644 --- a/includes/db/Database.php +++ b/includes/db/Database.php @@ -1191,6 +1191,7 @@ class Database { # SHOW INDEX should work for 3.x and up: # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html $table = $this->tableName( $table ); + $index = $this->indexName( $index ); $sql = 'SHOW INDEX FROM '.$table; $res = $this->query( $sql, $fname ); if ( !$res ) { @@ -1573,6 +1574,18 @@ class Database { return implode(' ',array($straightJoins,$otherJoins) ); } + /** + * Get the name of an index in a given table + */ + function indexName( $index ) { + // Backwards-compatibility hack + if ( $index == 'ar_usertext_timestamp' ) { + return 'usertext_timestamp'; + } else { + return $index; + } + } + /** * Wrapper for addslashes() * @param $s String: to be slashed. @@ -1621,7 +1634,7 @@ class Database { * PostgreSQL doesn't have them and returns "" */ function useIndexClause( $index ) { - return "FORCE INDEX ($index)"; + return "FORCE INDEX (" . $this->indexName( $index ) . ")"; } /** @@ -2258,8 +2271,12 @@ class Database { } // Table prefixes - $ins = preg_replace_callback( '/\/\*(?:\$wgDBprefix|_)\*\/([a-zA-Z_0-9]*)/', - array( &$this, 'tableNameCallback' ), $ins ); + $ins = preg_replace_callback( '!/\*(?:\$wgDBprefix|_)\*/([a-zA-Z_0-9]*)!', + array( $this, 'tableNameCallback' ), $ins ); + + // Index names + $ins = preg_replace_callback( '!/\*i\*/([a-zA-Z_0-9]*)!', + array( $this, 'indexNameCallback' ), $ins ); return $ins; } @@ -2271,6 +2288,13 @@ class Database { return $this->tableName( $matches[1] ); } + /** + * Index name callback + */ + protected function indexNameCallback( $matches ) { + return $this->indexName( $matches[1] ); + } + /* * Build a concatenation list to feed into a SQL query */ diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php index 91fd516c20..f8c0eb5170 100644 --- a/includes/db/DatabasePostgres.php +++ b/includes/db/DatabasePostgres.php @@ -698,7 +698,7 @@ class DatabasePostgres extends Database { return NULL; } while ( $row = $this->fetchObject( $res ) ) { - if ( $row->indexname == $index ) { + if ( $row->indexname == $this->indexName( $index ) ) { return $row; } } @@ -707,7 +707,9 @@ class DatabasePostgres extends Database { function indexUnique ($table, $index, $fname = 'Database::indexUnique' ) { $sql = "SELECT indexname FROM pg_indexes WHERE tablename='{$table}'". - " AND indexdef LIKE 'CREATE UNIQUE%({$index})'"; + " AND indexdef LIKE 'CREATE UNIQUE%(" . + $this->strencode( $this->indexName( $index ) ) . + ")'"; $res = $this->query( $sql, $fname ); if ( !$res ) return NULL; diff --git a/includes/db/DatabaseSqlite.php b/includes/db/DatabaseSqlite.php index f22f25c2c3..7a5956973f 100644 --- a/includes/db/DatabaseSqlite.php +++ b/includes/db/DatabaseSqlite.php @@ -101,11 +101,11 @@ class DatabaseSqlite extends Database { return $res; } - function freeResult(&$res) { + function freeResult($res) { if ($res instanceof ResultWrapper) $res->result = NULL; else $res = NULL; } - function fetchObject(&$res) { + function fetchObject($res) { if ($res instanceof ResultWrapper) $r =& $res->result; else $r =& $res; $cur = current($r); if (is_array($cur)) { @@ -117,7 +117,7 @@ class DatabaseSqlite extends Database { return false; } - function fetchRow(&$res) { + function fetchRow($res) { if ($res instanceof ResultWrapper) $r =& $res->result; else $r =& $res; $cur = current($r); if (is_array($cur)) { @@ -130,17 +130,17 @@ class DatabaseSqlite extends Database { /** * The PDO::Statement class implements the array interface so count() will work */ - function numRows(&$res) { + function numRows($res) { $r = $res instanceof ResultWrapper ? $res->result : $res; return count($r); } - function numFields(&$res) { + function numFields($res) { $r = $res instanceof ResultWrapper ? $res->result : $res; return is_array($r) ? count($r[0]) : 0; } - function fieldName(&$res,$n) { + function fieldName($res,$n) { $r = $res instanceof ResultWrapper ? $res->result : $res; if (is_array($r)) { $keys = array_keys($r[0]); @@ -156,6 +156,13 @@ class DatabaseSqlite extends Database { return str_replace('`','',parent::tableName($name)); } + /** + * Index names have DB scope + */ + function indexName( $index ) { + return $index; + } + /** * This must be called after nextSequenceVal */ @@ -163,7 +170,7 @@ class DatabaseSqlite extends Database { return $this->mConn->lastInsertId(); } - function dataSeek(&$res,$row) { + function dataSeek($res,$row) { if ($res instanceof ResultWrapper) $r =& $res->result; else $r =& $res; reset($r); if ($row > 0) for ($i = 0; $i < $row; $i++) next($r); @@ -194,7 +201,7 @@ class DatabaseSqlite extends Database { * - if errors are explicitly ignored, returns NULL on failure */ function indexInfo($table, $index, $fname = 'Database::indexExists') { - $sql = 'PRAGMA index_info(' . $this->addQuotes( $index ) . ')'; + $sql = 'PRAGMA index_info(' . $this->addQuotes( $this->indexName( $index ) ) . ')'; $res = $this->query( $sql, $fname ); if ( !$res ) { return null; @@ -213,7 +220,7 @@ class DatabaseSqlite extends Database { $row = $this->selectRow( 'sqlite_master', '*', array( 'type' => 'index', - 'name' => $index, + 'name' => $this->indexName( $index ), ), $fname ); if ( !$row || !isset( $row->sql ) ) { return null; @@ -314,7 +321,7 @@ class DatabaseSqlite extends Database { /** * Query whether a given column exists in the mediawiki schema */ - function fieldExists($table, $field) { + function fieldExists($table, $field, $fname = '') { $info = $this->fieldInfo( $table, $field ); return (bool)$info; } @@ -335,19 +342,19 @@ class DatabaseSqlite extends Database { return false; } - function begin() { + function begin( $fname = '' ) { if ($this->mTrxLevel == 1) $this->commit(); $this->mConn->beginTransaction(); $this->mTrxLevel = 1; } - function commit() { + function commit( $fname = '' ) { if ($this->mTrxLevel == 0) return; $this->mConn->commit(); $this->mTrxLevel = 0; } - function rollback() { + function rollback( $fname = '' ) { if ($this->mTrxLevel == 0) return; $this->mConn->rollBack(); $this->mTrxLevel = 0; diff --git a/maintenance/sqlite/archives/initial-indexes.sql b/maintenance/sqlite/archives/initial-indexes.sql index 5c0305d4b6..a88b7a26cd 100644 --- a/maintenance/sqlite/archives/initial-indexes.sql +++ b/maintenance/sqlite/archives/initial-indexes.sql @@ -51,8 +51,8 @@ CREATE TABLE /*_*/user_tmp ( user_registration binary(14), user_editcount int ); -CREATE UNIQUE INDEX user_name ON /*_*/user_tmp (user_name); -CREATE INDEX user_email_token ON /*_*/user_tmp (user_email_token); +CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user_tmp (user_name); +CREATE INDEX /*i*/user_email_token ON /*_*/user_tmp (user_email_token); CREATE TABLE /*_*/user_groups_tmp ( @@ -60,8 +60,8 @@ CREATE TABLE /*_*/user_groups_tmp ( ug_group varbinary(16) NOT NULL default '' ); -CREATE UNIQUE INDEX ug_user_group ON /*_*/user_groups_tmp (ug_user,ug_group); -CREATE INDEX ug_group ON /*_*/user_groups_tmp (ug_group); +CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups_tmp (ug_user,ug_group); +CREATE INDEX /*i*/ug_group ON /*_*/user_groups_tmp (ug_group); CREATE TABLE /*_*/page_tmp ( page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, @@ -77,9 +77,9 @@ CREATE TABLE /*_*/page_tmp ( page_len int unsigned NOT NULL ); -CREATE UNIQUE INDEX name_title ON /*_*/page_tmp (page_namespace,page_title); -CREATE INDEX page_random ON /*_*/page_tmp (page_random); -CREATE INDEX page_len ON /*_*/page_tmp (page_len); +CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page_tmp (page_namespace,page_title); +CREATE INDEX /*i*/page_random ON /*_*/page_tmp (page_random); +CREATE INDEX /*i*/page_len ON /*_*/page_tmp (page_len); CREATE TABLE /*_*/revision_tmp ( @@ -95,11 +95,11 @@ CREATE TABLE /*_*/revision_tmp ( rev_len int unsigned, rev_parent_id int unsigned default NULL ); -CREATE UNIQUE INDEX rev_page_id ON /*_*/revision_tmp (rev_page, rev_id); -CREATE INDEX rev_timestamp ON /*_*/revision_tmp (rev_timestamp); -CREATE INDEX page_timestamp ON /*_*/revision_tmp (rev_page,rev_timestamp); -CREATE INDEX user_timestamp ON /*_*/revision_tmp (rev_user,rev_timestamp); -CREATE INDEX usertext_timestamp ON /*_*/revision_tmp (rev_user_text,rev_timestamp); +CREATE UNIQUE INDEX /*i*/rev_page_id ON /*_*/revision_tmp (rev_page, rev_id); +CREATE INDEX /*i*/rev_timestamp ON /*_*/revision_tmp (rev_timestamp); +CREATE INDEX /*i*/page_timestamp ON /*_*/revision_tmp (rev_page,rev_timestamp); +CREATE INDEX /*i*/user_timestamp ON /*_*/revision_tmp (rev_user,rev_timestamp); +CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision_tmp (rev_user_text,rev_timestamp); CREATE TABLE /*_*/pagelinks_tmp ( pl_from int unsigned NOT NULL default 0, @@ -107,8 +107,8 @@ CREATE TABLE /*_*/pagelinks_tmp ( pl_title varchar(255) binary NOT NULL default '' ); -CREATE UNIQUE INDEX pl_from ON /*_*/pagelinks_tmp (pl_from,pl_namespace,pl_title); -CREATE INDEX pl_namespace_title ON /*_*/pagelinks_tmp (pl_namespace,pl_title,pl_from); +CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks_tmp (pl_from,pl_namespace,pl_title); +CREATE INDEX /*i*/pl_namespace_title ON /*_*/pagelinks_tmp (pl_namespace,pl_title,pl_from); CREATE TABLE /*_*/templatelinks_tmp ( @@ -117,16 +117,16 @@ CREATE TABLE /*_*/templatelinks_tmp ( tl_title varchar(255) binary NOT NULL default '' ); -CREATE UNIQUE INDEX tl_from ON /*_*/templatelinks_tmp (tl_from,tl_namespace,tl_title); -CREATE INDEX tl_namespace_title ON /*_*/templatelinks_tmp (tl_namespace,tl_title,tl_from); +CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks_tmp (tl_from,tl_namespace,tl_title); +CREATE INDEX /*i*/tl_namespace_title ON /*_*/templatelinks_tmp (tl_namespace,tl_title,tl_from); CREATE TABLE /*_*/imagelinks_tmp ( il_from int unsigned NOT NULL default 0, il_to varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX il_from ON /*_*/imagelinks_tmp (il_from,il_to); -CREATE INDEX il_to ON /*_*/imagelinks_tmp (il_to,il_from); +CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks_tmp (il_from,il_to); +CREATE INDEX /*i*/il_to ON /*_*/imagelinks_tmp (il_to,il_from); CREATE TABLE /*_*/categorylinks_tmp ( @@ -135,9 +135,9 @@ CREATE TABLE /*_*/categorylinks_tmp ( cl_sortkey varchar(70) binary NOT NULL default '', cl_timestamp timestamp NOT NULL ); -CREATE UNIQUE INDEX cl_from ON /*_*/categorylinks_tmp (cl_from,cl_to); -CREATE INDEX cl_sortkey ON /*_*/categorylinks_tmp (cl_to,cl_sortkey,cl_from); -CREATE INDEX cl_timestamp ON /*_*/categorylinks_tmp (cl_to,cl_timestamp); +CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks_tmp (cl_from,cl_to); +CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks_tmp (cl_to,cl_sortkey,cl_from); +CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks_tmp (cl_to,cl_timestamp); CREATE TABLE /*_*/category_tmp ( @@ -148,8 +148,8 @@ CREATE TABLE /*_*/category_tmp ( cat_files int signed NOT NULL default 0, cat_hidden tinyint unsigned NOT NULL default 0 ); -CREATE UNIQUE INDEX cat_title ON /*_*/category_tmp (cat_title); -CREATE INDEX cat_pages ON /*_*/category_tmp (cat_pages); +CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category_tmp (cat_title); +CREATE INDEX /*i*/cat_pages ON /*_*/category_tmp (cat_pages); CREATE TABLE /*_*/langlinks_tmp ( ll_from int unsigned NOT NULL default 0, @@ -157,8 +157,8 @@ CREATE TABLE /*_*/langlinks_tmp ( ll_title varchar(255) binary NOT NULL default '' ); -CREATE UNIQUE INDEX ll_from ON /*_*/langlinks_tmp (ll_from, ll_lang); -CREATE INDEX ll_lang_title ON /*_*/langlinks_tmp (ll_lang, ll_title); +CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks_tmp (ll_from, ll_lang); +CREATE INDEX /*i*/ll_lang_title ON /*_*/langlinks_tmp (ll_lang, ll_title); CREATE TABLE /*_*/site_stats_tmp ( @@ -172,7 +172,7 @@ CREATE TABLE /*_*/site_stats_tmp ( ss_admins int default '-1', ss_images int default 0 ); -CREATE UNIQUE INDEX ss_row_id ON /*_*/site_stats_tmp (ss_row_id); +CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats_tmp (ss_row_id); CREATE TABLE /*_*/ipblocks_tmp ( @@ -196,11 +196,11 @@ CREATE TABLE /*_*/ipblocks_tmp ( ipb_block_email bool NOT NULL default 0, ipb_allow_usertalk bool NOT NULL default 0 ); -CREATE UNIQUE INDEX ipb_address ON /*_*/ipblocks_tmp (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only); -CREATE INDEX ipb_user ON /*_*/ipblocks_tmp (ipb_user); -CREATE INDEX ipb_range ON /*_*/ipblocks_tmp (ipb_range_start(8), ipb_range_end(8)); -CREATE INDEX ipb_timestamp ON /*_*/ipblocks_tmp (ipb_timestamp); -CREATE INDEX ipb_expiry ON /*_*/ipblocks_tmp (ipb_expiry); +CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks_tmp (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only); +CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks_tmp (ipb_user); +CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks_tmp (ipb_range_start(8), ipb_range_end(8)); +CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks_tmp (ipb_timestamp); +CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks_tmp (ipb_expiry); CREATE TABLE /*_*/watchlist_tmp ( @@ -210,8 +210,8 @@ CREATE TABLE /*_*/watchlist_tmp ( wl_notificationtimestamp varbinary(14) ); -CREATE UNIQUE INDEX wl_user_namespace_title ON /*_*/watchlist_tmp (wl_user, wl_namespace, wl_title); -CREATE INDEX namespace_title ON /*_*/watchlist_tmp (wl_namespace, wl_title); +CREATE UNIQUE INDEX /*i*/wl_user_namespace_title ON /*_*/watchlist_tmp (wl_user, wl_namespace, wl_title); +CREATE INDEX /*i*/namespace_title ON /*_*/watchlist_tmp (wl_namespace, wl_title); CREATE TABLE /*_*/math_tmp ( @@ -222,7 +222,7 @@ CREATE TABLE /*_*/math_tmp ( math_mathml text ); -CREATE UNIQUE INDEX math_inputhash ON /*_*/math_tmp (math_inputhash); +CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math_tmp (math_inputhash); CREATE TABLE /*_*/interwiki_tmp ( @@ -232,7 +232,7 @@ CREATE TABLE /*_*/interwiki_tmp ( iw_trans tinyint NOT NULL default 0 ); -CREATE UNIQUE INDEX iw_prefix ON /*_*/interwiki_tmp (iw_prefix); +CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki_tmp (iw_prefix); CREATE TABLE /*_*/page_restrictions_tmp ( @@ -245,10 +245,10 @@ CREATE TABLE /*_*/page_restrictions_tmp ( pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT ); -CREATE UNIQUE INDEX pr_pagetype ON /*_*/page_restrictions_tmp (pr_page,pr_type); -CREATE UNIQUE INDEX pr_typelevel ON /*_*/page_restrictions_tmp (pr_type,pr_level); -CREATE UNIQUE INDEX pr_level ON /*_*/page_restrictions_tmp (pr_level); -CREATE UNIQUE INDEX pr_cascade ON /*_*/page_restrictions_tmp (pr_cascade); +CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions_tmp (pr_page,pr_type); +CREATE UNIQUE INDEX /*i*/pr_typelevel ON /*_*/page_restrictions_tmp (pr_type,pr_level); +CREATE UNIQUE INDEX /*i*/pr_level ON /*_*/page_restrictions_tmp (pr_level); +CREATE UNIQUE INDEX /*i*/pr_cascade ON /*_*/page_restrictions_tmp (pr_cascade); CREATE TABLE /*_*/protected_titles_tmp ( pt_namespace int NOT NULL, @@ -259,15 +259,15 @@ CREATE TABLE /*_*/protected_titles_tmp ( pt_expiry varbinary(14) NOT NULL default '', pt_create_perm varbinary(60) NOT NULL ); -CREATE UNIQUE INDEX pt_namespace_title ON /*_*/protected_titles_tmp (pt_namespace,pt_title); -CREATE INDEX pt_timestamp ON /*_*/protected_titles_tmp (pt_timestamp); +CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles_tmp (pt_namespace,pt_title); +CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles_tmp (pt_timestamp); CREATE TABLE /*_*/page_props_tmp ( pp_page int NOT NULL, pp_propname varbinary(60) NOT NULL, pp_value blob NOT NULL ); -CREATE UNIQUE INDEX pp_page_propname ON /*_*/page_props_tmp (pp_page,pp_propname); +CREATE UNIQUE INDEX /*i*/pp_page_propname ON /*_*/page_props_tmp (pp_page,pp_propname); -------------------------------------------------------------------------------- -- Populate the new tables using INSERT SELECT @@ -344,9 +344,9 @@ CREATE TABLE /*_*/searchindex ( si_title varchar(255) NOT NULL default '', si_text mediumtext NOT NULL ); -CREATE UNIQUE INDEX si_page ON /*_*/searchindex (si_page); -CREATE INDEX si_title ON /*_*/searchindex (si_title); -CREATE INDEX si_text ON /*_*/searchindex (si_text); +CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page); +CREATE INDEX /*i*/si_title ON /*_*/searchindex (si_title); +CREATE INDEX /*i*/si_text ON /*_*/searchindex (si_text); DROP TABLE IF EXISTS /*_*/transcache; CREATE TABLE /*_*/transcache ( @@ -354,14 +354,14 @@ CREATE TABLE /*_*/transcache ( tc_contents text, tc_time int NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX tc_url_idx ON /*_*/transcache (tc_url); +CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url); DROP TABLE IF EXISTS /*_*/querycache_info; CREATE TABLE /*_*/querycache_info ( qci_type varbinary(32) NOT NULL default '', qci_timestamp binary(14) NOT NULL default '19700101000000' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX qci_type ON /*_*/querycache_info (qci_type); +CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type); -------------------------------------------------------------------------------- -- Empty some cache tables to make the update faster @@ -375,43 +375,43 @@ DELETE FROM /*_*/querycachetwo; -- Add indexes to tables with no unique indexes -------------------------------------------------------------------------------- -CREATE INDEX un_user_id ON /*_*/user_newtalk (user_id); -CREATE INDEX un_user_ip ON /*_*/user_newtalk (user_ip); -CREATE INDEX name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp); -CREATE INDEX ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp); -CREATE INDEX el_from ON /*_*/externallinks (el_from, el_to(40)); -CREATE INDEX el_to ON /*_*/externallinks (el_to(60), el_from); -CREATE INDEX el_index ON /*_*/externallinks (el_index(60)); -CREATE INDEX img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp); -CREATE INDEX img_size ON /*_*/image (img_size); -CREATE INDEX img_timestamp ON /*_*/image (img_timestamp); -CREATE INDEX img_sha1 ON /*_*/image (img_sha1); -CREATE INDEX oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp); -CREATE INDEX oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp); -CREATE INDEX oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14)); -CREATE INDEX oi_sha1 ON /*_*/oldimage (oi_sha1); -CREATE INDEX fa_name ON /*_*/filearchive (fa_name, fa_timestamp); -CREATE INDEX fa_group_key ON /*_*/filearchive (fa_storage_group, fa_storage_key); -CREATE INDEX fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp); -CREATE INDEX fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp); -CREATE INDEX rc_timestamp ON /*_*/recentchanges (rc_timestamp); -CREATE INDEX rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title); -CREATE INDEX rc_cur_id ON /*_*/recentchanges (rc_cur_id); -CREATE INDEX new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp); -CREATE INDEX rc_ip ON /*_*/recentchanges (rc_ip); -CREATE INDEX rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text); -CREATE INDEX rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp); -CREATE INDEX qc_type_value ON /*_*/querycache (qc_type,qc_value); -CREATE INDEX oc_exptime ON /*_*/objectcache (exptime); -CREATE INDEX type_time ON /*_*/logging (log_type, log_timestamp); -CREATE INDEX user_time ON /*_*/logging (log_user, log_timestamp); -CREATE INDEX page_time ON /*_*/logging (log_namespace, log_title, log_timestamp); -CREATE INDEX times ON /*_*/logging (log_timestamp); -CREATE INDEX tb_page ON /*_*/trackbacks (tb_page); -CREATE INDEX job_cmd_namespace_title ON /*_*/job (job_cmd, job_namespace, job_title); -CREATE INDEX rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from); -CREATE INDEX qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value); -CREATE INDEX qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title); -CREATE INDEX qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo); +CREATE INDEX /*i*/un_user_id ON /*_*/user_newtalk (user_id); +CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip); +CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp); +CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp); +CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40)); +CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from); +CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60)); +CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp); +CREATE INDEX /*i*/img_size ON /*_*/image (img_size); +CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp); +CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1); +CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp); +CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp); +CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14)); +CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1); +CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp); +CREATE INDEX /*i*/fa_group_key ON /*_*/filearchive (fa_storage_group, fa_storage_key); +CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp); +CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp); +CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp); +CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title); +CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id); +CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp); +CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip); +CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text); +CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp); +CREATE INDEX /*i*/qc_type_value ON /*_*/querycache (qc_type,qc_value); +CREATE INDEX /*i*/oc_exptime ON /*_*/objectcache (exptime); +CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp); +CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp); +CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp); +CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp); +CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page); +CREATE INDEX /*i*/job_cmd_namespace_title ON /*_*/job (job_cmd, job_namespace, job_title); +CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from); +CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value); +CREATE INDEX /*i*/qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title); +CREATE INDEX /*i*/qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo); INSERT INTO /*_*/updatelog VALUES ('initial_indexes'); diff --git a/maintenance/tables.sql b/maintenance/tables.sql index d5559f7a85..dd87795d97 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -129,8 +129,8 @@ CREATE TABLE /*_*/user ( user_editcount int ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX user_name ON /*_*/user (user_name); -CREATE INDEX user_email_token ON /*_*/user (user_email_token); +CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name); +CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token); -- @@ -156,8 +156,8 @@ CREATE TABLE /*_*/user_groups ( ug_group varbinary(16) NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX ug_user_group ON /*_*/user_groups (ug_user,ug_group); -CREATE INDEX ug_group ON /*_*/user_groups (ug_group); +CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group); +CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group); -- Stores notifications of user talk page changes, for the display @@ -174,8 +174,8 @@ CREATE TABLE /*_*/user_newtalk ( ) /*$wgDBTableOptions*/; -- Indexes renamed for SQLite in 1.14 -CREATE INDEX un_user_id ON /*_*/user_newtalk (user_id); -CREATE INDEX un_user_ip ON /*_*/user_newtalk (user_ip); +CREATE INDEX /*i*/un_user_id ON /*_*/user_newtalk (user_id); +CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip); -- @@ -229,9 +229,9 @@ CREATE TABLE /*_*/page ( page_len int unsigned NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX name_title ON /*_*/page (page_namespace,page_title); -CREATE INDEX page_random ON /*_*/page (page_random); -CREATE INDEX page_len ON /*_*/page (page_len); +CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title); +CREATE INDEX /*i*/page_random ON /*_*/page (page_random); +CREATE INDEX /*i*/page_len ON /*_*/page (page_len); -- @@ -283,11 +283,11 @@ CREATE TABLE /*_*/revision ( ) /*$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 rev_page_id ON /*_*/revision (rev_page, rev_id); -CREATE INDEX rev_timestamp ON /*_*/revision (rev_timestamp); -CREATE INDEX page_timestamp ON /*_*/revision (rev_page,rev_timestamp); -CREATE INDEX user_timestamp ON /*_*/revision (rev_user,rev_timestamp); -CREATE INDEX usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp); +CREATE UNIQUE 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); +CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp); -- -- Holds text of individual page revisions. @@ -388,8 +388,8 @@ CREATE TABLE /*_*/archive ( ar_parent_id int unsigned default NULL ) /*$wgDBTableOptions*/; -CREATE INDEX name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp); -CREATE INDEX ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp); +CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp); +CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp); -- @@ -407,8 +407,8 @@ CREATE TABLE /*_*/pagelinks ( pl_title varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title); -CREATE INDEX pl_namespace_title ON /*_*/pagelinks (pl_namespace,pl_title,pl_from); +CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title); +CREATE INDEX /*i*/pl_namespace_title ON /*_*/pagelinks (pl_namespace,pl_title,pl_from); -- @@ -426,8 +426,8 @@ CREATE TABLE /*_*/templatelinks ( tl_title varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title); -CREATE INDEX tl_namespace_title ON /*_*/templatelinks (tl_namespace,tl_title,tl_from); +CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title); +CREATE INDEX /*i*/tl_namespace_title ON /*_*/templatelinks (tl_namespace,tl_title,tl_from); -- @@ -445,8 +445,8 @@ CREATE TABLE /*_*/imagelinks ( il_to varchar(255) binary NOT NULL default '' ) /*$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 /*i*/il_from ON /*_*/imagelinks (il_from,il_to); +CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from); -- @@ -477,13 +477,13 @@ CREATE TABLE /*_*/categorylinks ( cl_timestamp timestamp NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX cl_from ON /*_*/categorylinks (cl_from,cl_to); +CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to); -- We always sort within a given category... -CREATE INDEX cl_sortkey ON /*_*/categorylinks (cl_to,cl_sortkey,cl_from); +CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_sortkey,cl_from); -- Not really used? -CREATE INDEX cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp); +CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp); -- @@ -513,10 +513,10 @@ CREATE TABLE /*_*/category ( cat_hidden tinyint unsigned NOT NULL default 0 ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX cat_title ON /*_*/category (cat_title); +CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category (cat_title); -- For Special:Mostlinkedcategories -CREATE INDEX cat_pages ON /*_*/category (cat_pages); +CREATE INDEX /*i*/cat_pages ON /*_*/category (cat_pages); -- @@ -543,9 +543,9 @@ CREATE TABLE /*_*/externallinks ( el_index blob NOT NULL ) /*$wgDBTableOptions*/; -CREATE INDEX el_from ON /*_*/externallinks (el_from, el_to(40)); -CREATE INDEX el_to ON /*_*/externallinks (el_to(60), el_from); -CREATE INDEX el_index ON /*_*/externallinks (el_index(60)); +CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40)); +CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from); +CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60)); -- @@ -562,8 +562,8 @@ CREATE TABLE /*_*/langlinks ( ll_title varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX ll_from ON /*_*/langlinks (ll_from, ll_lang); -CREATE INDEX ll_lang_title ON /*_*/langlinks (ll_lang, ll_title); +CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang); +CREATE INDEX /*i*/ll_lang_title ON /*_*/langlinks (ll_lang, ll_title); -- @@ -604,7 +604,7 @@ CREATE TABLE /*_*/site_stats ( ) /*$wgDBTableOptions*/; -- Pointless index to assuage developer superstitions -CREATE UNIQUE INDEX ss_row_id ON /*_*/site_stats (ss_row_id); +CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id); -- @@ -682,12 +682,12 @@ CREATE TABLE /*_*/ipblocks ( -- Unique index to support "user already blocked" messages -- Any new options which prevent collisions should be included -CREATE UNIQUE INDEX ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only); +CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only); -CREATE INDEX ipb_user ON /*_*/ipblocks (ipb_user); -CREATE INDEX ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8)); -CREATE INDEX ipb_timestamp ON /*_*/ipblocks (ipb_timestamp); -CREATE INDEX ipb_expiry ON /*_*/ipblocks (ipb_expiry); +CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user); +CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8)); +CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp); +CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry); -- @@ -740,13 +740,13 @@ CREATE TABLE /*_*/image ( img_sha1 varbinary(32) NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE INDEX img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp); +CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp); -- Used by Special:Imagelist for sort-by-size -CREATE INDEX img_size ON /*_*/image (img_size); +CREATE INDEX /*i*/img_size ON /*_*/image (img_size); -- Used by Special:Newimages and Special:Imagelist -CREATE INDEX img_timestamp ON /*_*/image (img_timestamp); +CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp); -- Used in API and duplicate search -CREATE INDEX img_sha1 ON /*_*/image (img_sha1); +CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1); -- @@ -780,11 +780,11 @@ CREATE TABLE /*_*/oldimage ( oi_sha1 varbinary(32) NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE INDEX oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp); -CREATE INDEX oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp); +CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp); +CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp); -- oi_archive_name truncated to 14 to avoid key length overflow -CREATE INDEX oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14)); -CREATE INDEX oi_sha1 ON /*_*/oldimage (oi_sha1); +CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14)); +CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1); -- @@ -836,13 +836,13 @@ CREATE TABLE /*_*/filearchive ( ) /*$wgDBTableOptions*/; -- pick out by image name -CREATE INDEX fa_name ON /*_*/filearchive (fa_name, fa_timestamp); +CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp); -- pick out dupe files -CREATE INDEX fa_group_key ON /*_*/filearchive (fa_storage_group, fa_storage_key); +CREATE INDEX /*i*/fa_group_key ON /*_*/filearchive (fa_storage_group, fa_storage_key); -- sort by deletion time -CREATE INDEX fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp); +CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp); -- sort by uploader -CREATE INDEX fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp); +CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp); -- @@ -918,13 +918,13 @@ CREATE TABLE /*_*/recentchanges ( rc_params blob NULL ) /*$wgDBTableOptions*/; -CREATE INDEX rc_timestamp ON /*_*/recentchanges (rc_timestamp); -CREATE INDEX rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title); -CREATE INDEX rc_cur_id ON /*_*/recentchanges (rc_cur_id); -CREATE INDEX new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp); -CREATE INDEX rc_ip ON /*_*/recentchanges (rc_ip); -CREATE INDEX rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text); -CREATE INDEX rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp); +CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp); +CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title); +CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id); +CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp); +CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip); +CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text); +CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp); CREATE TABLE /*_*/watchlist ( @@ -943,8 +943,8 @@ CREATE TABLE /*_*/watchlist ( ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX wl_user_namespace_title ON /*_*/watchlist (wl_user, wl_namespace, wl_title); -CREATE INDEX namespace_title ON /*_*/watchlist (wl_namespace, wl_title); +CREATE UNIQUE INDEX /*i*/wl_user_namespace_title ON /*_*/watchlist (wl_user, wl_namespace, wl_title); +CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title); -- @@ -969,7 +969,7 @@ CREATE TABLE /*_*/math ( math_mathml text ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX math_inputhash ON /*_*/math (math_inputhash); +CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math (math_inputhash); -- @@ -991,9 +991,9 @@ CREATE TABLE /*_*/searchindex ( si_text mediumtext NOT NULL ) ENGINE=MyISAM; -CREATE UNIQUE INDEX si_page ON /*_*/searchindex (si_page); -CREATE FULLTEXT INDEX si_title ON /*_*/searchindex (si_title); -CREATE FULLTEXT INDEX si_text ON /*_*/searchindex (si_text); +CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page); +CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title); +CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text); -- @@ -1016,7 +1016,7 @@ CREATE TABLE /*_*/interwiki ( iw_trans tinyint NOT NULL default 0 ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX iw_prefix ON /*_*/interwiki (iw_prefix); +CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki (iw_prefix); -- @@ -1034,7 +1034,7 @@ CREATE TABLE /*_*/querycache ( qc_title varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE INDEX qc_type_value ON /*_*/querycache (qc_type,qc_value); +CREATE INDEX /*i*/qc_type_value ON /*_*/querycache (qc_type,qc_value); -- @@ -1045,7 +1045,7 @@ CREATE TABLE /*_*/objectcache ( value mediumblob, exptime datetime ) /*$wgDBTableOptions*/; -CREATE INDEX oc_exptime ON /*_*/objectcache (exptime); +CREATE INDEX /*i*/oc_exptime ON /*_*/objectcache (exptime); -- @@ -1057,7 +1057,7 @@ CREATE TABLE /*_*/transcache ( tc_time int NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX tc_url_idx ON /*_*/transcache (tc_url); +CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url); CREATE TABLE /*_*/logging ( @@ -1091,10 +1091,10 @@ CREATE TABLE /*_*/logging ( log_deleted tinyint unsigned NOT NULL default 0 ) /*$wgDBTableOptions*/; -CREATE INDEX type_time ON /*_*/logging (log_type, log_timestamp); -CREATE INDEX user_time ON /*_*/logging (log_user, log_timestamp); -CREATE INDEX page_time ON /*_*/logging (log_namespace, log_title, log_timestamp); -CREATE INDEX times ON /*_*/logging (log_timestamp); +CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp); +CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp); +CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp); +CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp); CREATE TABLE /*_*/trackbacks ( @@ -1105,7 +1105,7 @@ CREATE TABLE /*_*/trackbacks ( tb_ex text, tb_name varchar(255) ) /*$wgDBTableOptions*/; -CREATE INDEX tb_page ON /*_*/trackbacks (tb_page); +CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page); -- Jobs performed by parallel apache threads or a command-line daemon @@ -1126,7 +1126,7 @@ CREATE TABLE /*_*/job ( job_params blob NOT NULL ) /*$wgDBTableOptions*/; -CREATE INDEX job_cmd_namespace_title ON /*_*/job (job_cmd, job_namespace, job_title); +CREATE INDEX /*i*/job_cmd_namespace_title ON /*_*/job (job_cmd, job_namespace, job_title); -- Details of updates to cached special pages @@ -1139,7 +1139,7 @@ CREATE TABLE /*_*/querycache_info ( qci_timestamp binary(14) NOT NULL default '19700101000000' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX qci_type ON /*_*/querycache_info (qci_type); +CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type); -- For each redirect, this table contains exactly one row defining its target @@ -1155,7 +1155,7 @@ CREATE TABLE /*_*/redirect ( rd_title varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE INDEX rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from); +CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from); -- Used for caching expensive grouped queries that need two links (for example double-redirects) @@ -1175,9 +1175,9 @@ CREATE TABLE /*_*/querycachetwo ( qcc_titletwo varchar(255) binary NOT NULL default '' ) /*$wgDBTableOptions*/; -CREATE INDEX qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value); -CREATE INDEX qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title); -CREATE INDEX qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo); +CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value); +CREATE INDEX /*i*/qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title); +CREATE INDEX /*i*/qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo); -- Used for storing page restrictions (i.e. protection levels) @@ -1198,10 +1198,10 @@ CREATE TABLE /*_*/page_restrictions ( pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type); -CREATE UNIQUE INDEX pr_typelevel ON /*_*/page_restrictions (pr_type,pr_level); -CREATE UNIQUE INDEX pr_level ON /*_*/page_restrictions (pr_level); -CREATE UNIQUE INDEX pr_cascade ON /*_*/page_restrictions (pr_cascade); +CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type); +CREATE UNIQUE INDEX /*i*/pr_typelevel ON /*_*/page_restrictions (pr_type,pr_level); +CREATE UNIQUE INDEX /*i*/pr_level ON /*_*/page_restrictions (pr_level); +CREATE UNIQUE INDEX /*i*/pr_cascade ON /*_*/page_restrictions (pr_cascade); -- Protected titles - nonexistent pages that have been protected @@ -1215,8 +1215,8 @@ CREATE TABLE /*_*/protected_titles ( pt_create_perm varbinary(60) NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title); -CREATE INDEX pt_timestamp ON /*_*/protected_titles (pt_timestamp); +CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title); +CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles (pt_timestamp); -- Name/value pairs indexed by page_id @@ -1226,7 +1226,7 @@ CREATE TABLE /*_*/page_props ( pp_value blob NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX pp_page_propname ON /*_*/page_props (pp_page,pp_propname); +CREATE UNIQUE INDEX /*i*/pp_page_propname ON /*_*/page_props (pp_page,pp_propname); -- A table to log updates, one text key row per update.