r71206 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r71205‎ | r71206 | r71207 >
Date:17:48, 17 August 2010
Author:maxsem
Status:ok
Tags:
Comment:
Converted two more updater functions to OOP: add_field() and add_index()
Modified paths:
  • /trunk/phase3/includes/installer/DatabaseUpdater.php (modified) (history)
  • /trunk/phase3/includes/installer/MysqlUpdater.php (modified) (history)
  • /trunk/phase3/includes/installer/SqliteUpdater.php (modified) (history)
  • /trunk/phase3/maintenance/updaters.inc (modified) (history)

Diff [purge]

Index: trunk/phase3/maintenance/updaters.inc
@@ -60,38 +60,6 @@
6161 }
6262 }
6363
64 -function add_field( $table, $field, $patch, $fullpath = false ) {
65 - global $wgDatabase;
66 - if ( !$wgDatabase->tableExists( $table ) ) {
67 - wfOut( "...$table table does not exist, skipping new field patch\n" );
68 - } elseif ( $wgDatabase->fieldExists( $table, $field ) ) {
69 - wfOut( "...have $field field in $table table.\n" );
70 - } else {
71 - wfOut( "Adding $field field to table $table..." );
72 - if ( $fullpath ) {
73 - $wgDatabase->sourceFile( $patch );
74 - } else {
75 - $wgDatabase->sourceFile( archive( $patch ) );
76 - }
77 - wfOut( "ok\n" );
78 - }
79 -}
80 -
81 -function add_index( $table, $index, $patch, $fullpath = false ) {
82 - global $wgDatabase;
83 - if ( $wgDatabase->indexExists( $table, $index ) ) {
84 - wfOut( "...$index key already set on $table table.\n" );
85 - } else {
86 - wfOut( "Adding $index key to table $table... " );
87 - if ( $fullpath ) {
88 - $wgDatabase->sourceFile( $patch );
89 - } else {
90 - $wgDatabase->sourceFile( archive( $patch ) );
91 - }
92 - wfOut( "ok\n" );
93 - }
94 -}
95 -
9664 function drop_index_if_exists( $table, $index, $patch, $fullpath = false ) {
9765 global $wgDatabase;
9866 if ( $wgDatabase->indexExists( $table, $index ) ) {
Index: trunk/phase3/includes/installer/DatabaseUpdater.php
@@ -117,7 +117,7 @@
118118 foreach ( $wgExtNewFields as $fieldRecord ) {
119119 if ( $fieldRecord[0] != 'user' || $doUser ) {
120120 $updates[] = array(
121 - 'add_field', $fieldRecord[0], $fieldRecord[1],
 121+ 'addField', $fieldRecord[0], $fieldRecord[1],
122122 $fieldRecord[2], true
123123 );
124124 }
@@ -125,7 +125,7 @@
126126
127127 foreach ( $wgExtNewIndexes as $fieldRecord ) {
128128 $updates[] = array(
129 - 'add_index', $fieldRecord[0], $fieldRecord[1],
 129+ 'addIndex', $fieldRecord[0], $fieldRecord[1],
130130 $fieldRecord[2], true
131131 );
132132 }
@@ -151,24 +151,69 @@
152152 protected abstract function getCoreUpdateList();
153153
154154 /**
 155+ * Applies a SQL patch
 156+ * @param $path String Path to the patch file
 157+ * @param $isFullPath Boolean Whether to treat $path as a relative or not
 158+ */
 159+ protected function applyPatch( $path, $isFullPath = false ) {
 160+ if ( $isFullPath ) {
 161+ $this->db->sourceFile( $path );
 162+ } else {
 163+ $this->db->sourceFile( archive( $path ) );
 164+ }
 165+ }
 166+
 167+ /**
155168 * Add a new table to the database
156169 * @param $name String Name of the new table
157170 * @param $patch String Path to the patch file
158 - * @param $fullpath Boolean Whether to treat $fullPath as a relative or not
 171+ * @param $fullpath Boolean Whether to treat $patch path as a relative or not
159172 */
160173 protected function addTable( $name, $patch, $fullpath = false ) {
161174 if ( $this->db->tableExists( $name ) ) {
162175 wfOut( "...$name table already exists.\n" );
163176 } else {
164177 wfOut( "Creating $name table..." );
165 - if ( $fullpath ) {
166 - $this->db->sourceFile( $patch );
167 - } else {
168 - $this->db->sourceFile( archive( $patch ) );
169 - }
 178+ $this->applyPatch( $patch, $fullpath );
170179 wfOut( "ok\n" );
171180 }
172181 }
 182+
 183+ /**
 184+ * Add a new field to an existing table
 185+ * @param $table String Name of the table to modify
 186+ * @param $field String Name of the new field
 187+ * @param $patch String Path to the patch file
 188+ * @param $fullpath Boolean Whether to treat $patch path as a relative or not
 189+ */
 190+ protected function addField( $table, $field, $patch, $fullpath = false ) {
 191+ if ( !$this->db->tableExists( $table ) ) {
 192+ wfOut( "...$table table does not exist, skipping new field patch\n" );
 193+ } elseif ( $this->db->fieldExists( $table, $field ) ) {
 194+ wfOut( "...have $field field in $table table.\n" );
 195+ } else {
 196+ wfOut( "Adding $field field to table $table..." );
 197+ $this->applyPatch( $patch, $fullpath );
 198+ wfOut( "ok\n" );
 199+ }
 200+ }
 201+
 202+ /**
 203+ * Add a new index to an existing table
 204+ * @param $table String Name of the table to modify
 205+ * @param $index String Name of the new index
 206+ * @param $patch String Path to the patch file
 207+ * @param $fullpath Boolean Whether to treat $patch path as a relative or not
 208+ */
 209+ function addIndex( $table, $index, $patch, $fullpath = false ) {
 210+ if ( $this->db->indexExists( $table, $index ) ) {
 211+ wfOut( "...$index key already set on $table table.\n" );
 212+ } else {
 213+ wfOut( "Adding $index key to table $table... " );
 214+ $this->applyPatch( $patch, $fullpath );
 215+ wfOut( "ok\n" );
 216+ }
 217+ }
173218 }
174219
175220 class OracleUpdater extends DatabaseUpdater {
Index: trunk/phase3/includes/installer/MysqlUpdater.php
@@ -11,124 +11,124 @@
1212 protected function getCoreUpdateList() {
1313 return array(
1414 // 1.2
15 - array( 'add_field', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ),
16 - array( 'add_field', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ),
 15+ array( 'addField', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ),
 16+ array( 'addField', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ),
1717 array( 'do_interwiki_update' ),
1818 array( 'do_index_update' ),
1919 array( 'addTable', 'hitcounter', 'patch-hitcounter.sql' ),
20 - array( 'add_field', 'recentchanges', 'rc_type', 'patch-rc_type.sql' ),
 20+ array( 'addField', 'recentchanges', 'rc_type', 'patch-rc_type.sql' ),
2121
2222 // 1.3
23 - array( 'add_field', 'user', 'user_real_name', 'patch-user-realname.sql' ),
 23+ array( 'addField', 'user', 'user_real_name', 'patch-user-realname.sql' ),
2424 array( 'addTable', 'querycache', 'patch-querycache.sql' ),
2525 array( 'addTable', 'objectcache', 'patch-objectcache.sql' ),
2626 array( 'addTable', 'categorylinks', 'patch-categorylinks.sql' ),
2727 array( 'do_old_links_update' ),
2828 array( 'fix_ancient_imagelinks' ),
29 - array( 'add_field', 'recentchanges', 'rc_ip', 'patch-rc_ip.sql' ),
 29+ array( 'addField', 'recentchanges', 'rc_ip', 'patch-rc_ip.sql' ),
3030
3131 // 1.4
3232 array( 'do_image_name_unique_update' ),
33 - array( 'add_field', 'recentchanges', 'rc_id', 'patch-rc_id.sql' ),
34 - array( 'add_field', 'recentchanges', 'rc_patrolled', 'patch-rc-patrol.sql' ),
 33+ array( 'addField', 'recentchanges', 'rc_id', 'patch-rc_id.sql' ),
 34+ array( 'addField', 'recentchanges', 'rc_patrolled', 'patch-rc-patrol.sql' ),
3535 array( 'addTable', 'logging', 'patch-logging.sql' ),
36 - array( 'add_field', 'user', 'user_token', 'patch-user_token.sql' ),
 36+ array( 'addField', 'user', 'user_token', 'patch-user_token.sql' ),
3737 array( 'do_watchlist_update' ),
3838 array( 'do_user_update' ),
3939
4040 // 1.5
4141 array( 'do_schema_restructuring' ),
42 - array( 'add_field', 'logging', 'log_params', 'patch-log_params.sql' ),
 42+ array( 'addField', 'logging', 'log_params', 'patch-log_params.sql' ),
4343 array( 'check_bin', 'logging', 'log_title', 'patch-logging-title.sql', ),
44 - array( 'add_field', 'archive', 'ar_rev_id', 'patch-archive-rev_id.sql' ),
45 - array( 'add_field', 'page', 'page_len', 'patch-page_len.sql' ),
 44+ array( 'addField', 'archive', 'ar_rev_id', 'patch-archive-rev_id.sql' ),
 45+ array( 'addField', 'page', 'page_len', 'patch-page_len.sql' ),
4646 array( 'do_inverse_timestamp' ),
4747 array( 'do_text_id' ),
48 - array( 'add_field', 'revision', 'rev_deleted', 'patch-rev_deleted.sql' ),
49 - array( 'add_field', 'image', 'img_width', 'patch-img_width.sql' ),
50 - array( 'add_field', 'image', 'img_metadata', 'patch-img_metadata.sql' ),
51 - array( 'add_field', 'user', 'user_email_token', 'patch-user_email_token.sql' ),
52 - array( 'add_field', 'archive', 'ar_text_id', 'patch-archive-text_id.sql' ),
 48+ array( 'addField', 'revision', 'rev_deleted', 'patch-rev_deleted.sql' ),
 49+ array( 'addField', 'image', 'img_width', 'patch-img_width.sql' ),
 50+ array( 'addField', 'image', 'img_metadata', 'patch-img_metadata.sql' ),
 51+ array( 'addField', 'user', 'user_email_token', 'patch-user_email_token.sql' ),
 52+ array( 'addField', 'archive', 'ar_text_id', 'patch-archive-text_id.sql' ),
5353 array( 'doNamespaceSize' ),
54 - array( 'add_field', 'image', 'img_media_type', 'patch-img_media_type.sql' ),
 54+ array( 'addField', 'image', 'img_media_type', 'patch-img_media_type.sql' ),
5555 array( 'do_pagelinks_update' ),
5656 array( 'do_drop_img_type' ),
5757 array( 'do_user_unique_update' ),
5858 array( 'do_user_groups_update' ),
59 - array( 'add_field', 'site_stats', 'ss_total_pages', 'patch-ss_total_articles.sql' ),
 59+ array( 'addField', 'site_stats', 'ss_total_pages', 'patch-ss_total_articles.sql' ),
6060 array( 'addTable', 'user_newtalk', 'patch-usernewtalk2.sql' ),
6161 array( 'addTable', 'transcache', 'patch-transcache.sql' ),
62 - array( 'add_field', 'interwiki', 'iw_trans', 'patch-interwiki-trans.sql' ),
 62+ array( 'addField', 'interwiki', 'iw_trans', 'patch-interwiki-trans.sql' ),
6363 array( 'addTable', 'trackbacks', 'patch-trackbacks.sql' ),
6464
6565 // 1.6
6666 array( 'do_watchlist_null' ),
6767 array( 'do_logging_timestamp_index' ),
68 - array( 'add_field', 'ipblocks', 'ipb_range_start', 'patch-ipb_range_start.sql' ),
 68+ array( 'addField', 'ipblocks', 'ipb_range_start', 'patch-ipb_range_start.sql' ),
6969 array( 'do_page_random_update' ),
70 - array( 'add_field', 'user', 'user_registration', 'patch-user_registration.sql' ),
 70+ array( 'addField', 'user', 'user_registration', 'patch-user_registration.sql' ),
7171 array( 'do_templatelinks_update' ),
7272 array( 'addTable', 'externallinks', 'patch-externallinks.sql' ),
7373 array( 'addTable', 'job', 'patch-job.sql' ),
74 - array( 'add_field', 'site_stats', 'ss_images', 'patch-ss_images.sql' ),
 74+ array( 'addField', 'site_stats', 'ss_images', 'patch-ss_images.sql' ),
7575 array( 'addTable', 'langlinks', 'patch-langlinks.sql' ),
7676 array( 'addTable', 'querycache_info', 'patch-querycacheinfo.sql' ),
7777 array( 'addTable', 'filearchive', 'patch-filearchive.sql' ),
78 - array( 'add_field', 'ipblocks', 'ipb_anon_only', 'patch-ipb_anon_only.sql' ),
 78+ array( 'addField', 'ipblocks', 'ipb_anon_only', 'patch-ipb_anon_only.sql' ),
7979 array( 'do_rc_indices_update' ),
8080
8181 // 1.9
82 - array( 'add_field', 'user', 'user_newpass_time', 'patch-user_newpass_time.sql' ),
 82+ array( 'addField', 'user', 'user_newpass_time', 'patch-user_newpass_time.sql' ),
8383 array( 'addTable', 'redirect', 'patch-redirect.sql' ),
8484 array( 'addTable', 'querycachetwo', 'patch-querycachetwo.sql' ),
85 - array( 'add_field', 'ipblocks', 'ipb_enable_autoblock', 'patch-ipb_optional_autoblock.sql' ),
 85+ array( 'addField', 'ipblocks', 'ipb_enable_autoblock', 'patch-ipb_optional_autoblock.sql' ),
8686 array( 'do_backlinking_indices_update' ),
87 - array( 'add_field', 'recentchanges', 'rc_old_len', 'patch-rc_len.sql' ),
88 - array( 'add_field', 'user', 'user_editcount', 'patch-user_editcount.sql' ),
 87+ array( 'addField', 'recentchanges', 'rc_old_len', 'patch-rc_len.sql' ),
 88+ array( 'addField', 'user', 'user_editcount', 'patch-user_editcount.sql' ),
8989
9090 // 1.10
9191 array( 'do_restrictions_update' ),
92 - array( 'add_field', 'logging', 'log_id', 'patch-log_id.sql' ),
93 - array( 'add_field', 'revision', 'rev_parent_id', 'patch-rev_parent_id.sql' ),
94 - array( 'add_field', 'page_restrictions', 'pr_id', 'patch-page_restrictions_sortkey.sql' ),
95 - array( 'add_field', 'revision', 'rev_len', 'patch-rev_len.sql' ),
96 - array( 'add_field', 'recentchanges', 'rc_deleted', 'patch-rc_deleted.sql' ),
97 - array( 'add_field', 'logging', 'log_deleted', 'patch-log_deleted.sql' ),
98 - array( 'add_field', 'archive', 'ar_deleted', 'patch-ar_deleted.sql' ),
99 - array( 'add_field', 'ipblocks', 'ipb_deleted', 'patch-ipb_deleted.sql' ),
100 - array( 'add_field', 'filearchive', 'fa_deleted', 'patch-fa_deleted.sql' ),
101 - array( 'add_field', 'archive', 'ar_len', 'patch-ar_len.sql' ),
 92+ array( 'addField', 'logging', 'log_id', 'patch-log_id.sql' ),
 93+ array( 'addField', 'revision', 'rev_parent_id', 'patch-rev_parent_id.sql' ),
 94+ array( 'addField', 'page_restrictions', 'pr_id', 'patch-page_restrictions_sortkey.sql' ),
 95+ array( 'addField', 'revision', 'rev_len', 'patch-rev_len.sql' ),
 96+ array( 'addField', 'recentchanges', 'rc_deleted', 'patch-rc_deleted.sql' ),
 97+ array( 'addField', 'logging', 'log_deleted', 'patch-log_deleted.sql' ),
 98+ array( 'addField', 'archive', 'ar_deleted', 'patch-ar_deleted.sql' ),
 99+ array( 'addField', 'ipblocks', 'ipb_deleted', 'patch-ipb_deleted.sql' ),
 100+ array( 'addField', 'filearchive', 'fa_deleted', 'patch-fa_deleted.sql' ),
 101+ array( 'addField', 'archive', 'ar_len', 'patch-ar_len.sql' ),
102102
103103 // 1.11
104 - array( 'add_field', 'ipblocks', 'ipb_block_email', 'patch-ipb_emailban.sql' ),
 104+ array( 'addField', 'ipblocks', 'ipb_block_email', 'patch-ipb_emailban.sql' ),
105105 array( 'do_categorylinks_indices_update' ),
106 - array( 'add_field', 'oldimage', 'oi_metadata', 'patch-oi_metadata.sql' ),
 106+ array( 'addField', 'oldimage', 'oi_metadata', 'patch-oi_metadata.sql' ),
107107 array( 'do_archive_user_index' ),
108108 array( 'do_image_user_index' ),
109109 array( 'do_oldimage_user_index' ),
110 - array( 'add_field', 'archive', 'ar_page_id', 'patch-archive-page_id.sql' ),
111 - array( 'add_field', 'image', 'img_sha1', 'patch-img_sha1.sql' ),
 110+ array( 'addField', 'archive', 'ar_page_id', 'patch-archive-page_id.sql' ),
 111+ array( 'addField', 'image', 'img_sha1', 'patch-img_sha1.sql' ),
112112
113113 // 1.12
114114 array( 'addTable', 'protected_titles', 'patch-protected_titles.sql' ),
115115
116116 // 1.13
117 - array( 'add_field', 'ipblocks', 'ipb_by_text', 'patch-ipb_by_text.sql' ),
 117+ array( 'addField', 'ipblocks', 'ipb_by_text', 'patch-ipb_by_text.sql' ),
118118 array( 'addTable', 'page_props', 'patch-page_props.sql' ),
119119 array( 'addTable', 'updatelog', 'patch-updatelog.sql' ),
120120 array( 'addTable', 'category', 'patch-category.sql' ),
121121 array( 'do_category_population' ),
122 - array( 'add_field', 'archive', 'ar_parent_id', 'patch-ar_parent_id.sql' ),
123 - array( 'add_field', 'user_newtalk', 'user_last_timestamp', 'patch-user_last_timestamp.sql' ),
 122+ array( 'addField', 'archive', 'ar_parent_id', 'patch-ar_parent_id.sql' ),
 123+ array( 'addField', 'user_newtalk', 'user_last_timestamp', 'patch-user_last_timestamp.sql' ),
124124 array( 'do_populate_parent_id' ),
125125 array( 'check_bin', 'protected_titles', 'pt_title', 'patch-pt_title-encoding.sql', ),
126126 array( 'maybe_do_profiling_memory_update' ),
127127 array( 'do_filearchive_indices_update' ),
128128
129129 // 1.14
130 - array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
 130+ array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
131131 array( 'do_active_users_init' ),
132 - array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
 132+ array( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
133133
134134 // 1.15
135135 array( 'do_unique_pl_tl_il' ),
@@ -140,12 +140,12 @@
141141 array( 'addTable', 'user_properties', 'patch-user_properties.sql' ),
142142 array( 'addTable', 'log_search', 'patch-log_search.sql' ),
143143 array( 'do_log_search_population' ),
144 - array( 'add_field', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
 144+ array( 'addField', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
145145 array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ),
146146 array( 'addTable', 'external_user', 'patch-external_user.sql' ),
147 - array( 'add_index', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
148 - array( 'add_index', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
149 - array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
 147+ array( 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
 148+ array( 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
 149+ array( 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
150150 array( 'do_update_transcache_field' ),
151151 array( 'rename_eu_wiki_id' ),
152152 array( 'do_update_mime_minor_field' ),
@@ -153,12 +153,12 @@
154154
155155 // 1.17
156156 array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ),
157 - array( 'add_index', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ),
158 - array( 'add_field', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
159 - array( 'add_field', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
 157+ array( 'addIndex', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ),
 158+ array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
 159+ array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
160160 array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ),
161161 array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix_from_title', 'patch-kill-iwl_pft.sql' ),
162 - array( 'add_field', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ),
 162+ array( 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ),
163163 array( 'do_collation_update' ),
164164 );
165165 }
Index: trunk/phase3/includes/installer/SqliteUpdater.php
@@ -11,9 +11,9 @@
1212 protected function getCoreUpdateList() {
1313 return array(
1414 // 1.14
15 - array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
 15+ array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
1616 array( 'do_active_users_init' ),
17 - array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
 17+ array( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
1818 array( 'sqlite_initial_indexes' ),
1919
2020 // 1.15
@@ -25,20 +25,20 @@
2626 array( 'addTable', 'user_properties', 'patch-user_properties.sql' ),
2727 array( 'addTable', 'log_search', 'patch-log_search.sql' ),
2828 array( 'do_log_search_population' ),
29 - array( 'add_field', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
 29+ array( 'addField', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
3030 array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ),
3131 array( 'addTable', 'external_user', 'patch-external_user.sql' ),
32 - array( 'add_index', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
33 - array( 'add_index', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
34 - array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
 32+ array( 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
 33+ array( 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
 34+ array( 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
3535 array( 'do_update_transcache_field' ),
3636 array( 'sqlite_setup_searchindex' ),
3737
3838 // 1.17
3939 array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ),
40 - array( 'add_index', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ),
41 - array( 'add_field', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
42 - array( 'add_field', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
 40+ array( 'addIndex', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ),
 41+ array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
 42+ array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
4343 array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ),
4444 array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix_from_title', 'patch-kill-iwl_pft.sql' ),
4545 );

Status & tagging log