From: Max Semenik Date: Tue, 17 Aug 2010 17:48:22 +0000 (+0000) Subject: Converted two more updater functions to OOP: add_field() and add_index() X-Git-Tag: 1.31.0-rc.0~35460 X-Git-Url: http://git.cyclocoop.org//%27%40script%40/%27?a=commitdiff_plain;h=32d89e511d04851c5d73339094555e17905d24f4;p=lhc%2Fweb%2Fwiklou.git Converted two more updater functions to OOP: add_field() and add_index() --- diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php index 04827bd93d..4af7472ee0 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -117,7 +117,7 @@ abstract class DatabaseUpdater { foreach ( $wgExtNewFields as $fieldRecord ) { if ( $fieldRecord[0] != 'user' || $doUser ) { $updates[] = array( - 'add_field', $fieldRecord[0], $fieldRecord[1], + 'addField', $fieldRecord[0], $fieldRecord[1], $fieldRecord[2], true ); } @@ -125,7 +125,7 @@ abstract class DatabaseUpdater { foreach ( $wgExtNewIndexes as $fieldRecord ) { $updates[] = array( - 'add_index', $fieldRecord[0], $fieldRecord[1], + 'addIndex', $fieldRecord[0], $fieldRecord[1], $fieldRecord[2], true ); } @@ -150,22 +150,67 @@ abstract class DatabaseUpdater { */ protected abstract function getCoreUpdateList(); + /** + * Applies a SQL patch + * @param $path String Path to the patch file + * @param $isFullPath Boolean Whether to treat $path as a relative or not + */ + protected function applyPatch( $path, $isFullPath = false ) { + if ( $isFullPath ) { + $this->db->sourceFile( $path ); + } else { + $this->db->sourceFile( archive( $path ) ); + } + } + /** * Add a new table to the database * @param $name String Name of the new table * @param $patch String Path to the patch file - * @param $fullpath Boolean Whether to treat $fullPath as a relative or not + * @param $fullpath Boolean Whether to treat $patch path as a relative or not */ protected function addTable( $name, $patch, $fullpath = false ) { if ( $this->db->tableExists( $name ) ) { wfOut( "...$name table already exists.\n" ); } else { wfOut( "Creating $name table..." ); - if ( $fullpath ) { - $this->db->sourceFile( $patch ); - } else { - $this->db->sourceFile( archive( $patch ) ); - } + $this->applyPatch( $patch, $fullpath ); + wfOut( "ok\n" ); + } + } + + /** + * Add a new field to an existing table + * @param $table String Name of the table to modify + * @param $field String Name of the new field + * @param $patch String Path to the patch file + * @param $fullpath Boolean Whether to treat $patch path as a relative or not + */ + protected function addField( $table, $field, $patch, $fullpath = false ) { + if ( !$this->db->tableExists( $table ) ) { + wfOut( "...$table table does not exist, skipping new field patch\n" ); + } elseif ( $this->db->fieldExists( $table, $field ) ) { + wfOut( "...have $field field in $table table.\n" ); + } else { + wfOut( "Adding $field field to table $table..." ); + $this->applyPatch( $patch, $fullpath ); + wfOut( "ok\n" ); + } + } + + /** + * Add a new index to an existing table + * @param $table String Name of the table to modify + * @param $index String Name of the new index + * @param $patch String Path to the patch file + * @param $fullpath Boolean Whether to treat $patch path as a relative or not + */ + function addIndex( $table, $index, $patch, $fullpath = false ) { + if ( $this->db->indexExists( $table, $index ) ) { + wfOut( "...$index key already set on $table table.\n" ); + } else { + wfOut( "Adding $index key to table $table... " ); + $this->applyPatch( $patch, $fullpath ); wfOut( "ok\n" ); } } diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index 82ee42c4b4..99ef5707f0 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -11,124 +11,124 @@ class MysqlUpdater extends DatabaseUpdater { protected function getCoreUpdateList() { return array( // 1.2 - array( 'add_field', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ), - array( 'add_field', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ), + array( 'addField', 'ipblocks', 'ipb_id', 'patch-ipblocks.sql' ), + array( 'addField', 'ipblocks', 'ipb_expiry', 'patch-ipb_expiry.sql' ), array( 'do_interwiki_update' ), array( 'do_index_update' ), array( 'addTable', 'hitcounter', 'patch-hitcounter.sql' ), - array( 'add_field', 'recentchanges', 'rc_type', 'patch-rc_type.sql' ), + array( 'addField', 'recentchanges', 'rc_type', 'patch-rc_type.sql' ), // 1.3 - array( 'add_field', 'user', 'user_real_name', 'patch-user-realname.sql' ), + array( 'addField', 'user', 'user_real_name', 'patch-user-realname.sql' ), array( 'addTable', 'querycache', 'patch-querycache.sql' ), array( 'addTable', 'objectcache', 'patch-objectcache.sql' ), array( 'addTable', 'categorylinks', 'patch-categorylinks.sql' ), array( 'do_old_links_update' ), array( 'fix_ancient_imagelinks' ), - array( 'add_field', 'recentchanges', 'rc_ip', 'patch-rc_ip.sql' ), + array( 'addField', 'recentchanges', 'rc_ip', 'patch-rc_ip.sql' ), // 1.4 array( 'do_image_name_unique_update' ), - array( 'add_field', 'recentchanges', 'rc_id', 'patch-rc_id.sql' ), - array( 'add_field', 'recentchanges', 'rc_patrolled', 'patch-rc-patrol.sql' ), + array( 'addField', 'recentchanges', 'rc_id', 'patch-rc_id.sql' ), + array( 'addField', 'recentchanges', 'rc_patrolled', 'patch-rc-patrol.sql' ), array( 'addTable', 'logging', 'patch-logging.sql' ), - array( 'add_field', 'user', 'user_token', 'patch-user_token.sql' ), + array( 'addField', 'user', 'user_token', 'patch-user_token.sql' ), array( 'do_watchlist_update' ), array( 'do_user_update' ), // 1.5 array( 'do_schema_restructuring' ), - array( 'add_field', 'logging', 'log_params', 'patch-log_params.sql' ), + array( 'addField', 'logging', 'log_params', 'patch-log_params.sql' ), array( 'check_bin', 'logging', 'log_title', 'patch-logging-title.sql', ), - array( 'add_field', 'archive', 'ar_rev_id', 'patch-archive-rev_id.sql' ), - array( 'add_field', 'page', 'page_len', 'patch-page_len.sql' ), + array( 'addField', 'archive', 'ar_rev_id', 'patch-archive-rev_id.sql' ), + array( 'addField', 'page', 'page_len', 'patch-page_len.sql' ), array( 'do_inverse_timestamp' ), array( 'do_text_id' ), - array( 'add_field', 'revision', 'rev_deleted', 'patch-rev_deleted.sql' ), - array( 'add_field', 'image', 'img_width', 'patch-img_width.sql' ), - array( 'add_field', 'image', 'img_metadata', 'patch-img_metadata.sql' ), - array( 'add_field', 'user', 'user_email_token', 'patch-user_email_token.sql' ), - array( 'add_field', 'archive', 'ar_text_id', 'patch-archive-text_id.sql' ), + array( 'addField', 'revision', 'rev_deleted', 'patch-rev_deleted.sql' ), + array( 'addField', 'image', 'img_width', 'patch-img_width.sql' ), + array( 'addField', 'image', 'img_metadata', 'patch-img_metadata.sql' ), + array( 'addField', 'user', 'user_email_token', 'patch-user_email_token.sql' ), + array( 'addField', 'archive', 'ar_text_id', 'patch-archive-text_id.sql' ), array( 'doNamespaceSize' ), - array( 'add_field', 'image', 'img_media_type', 'patch-img_media_type.sql' ), + array( 'addField', 'image', 'img_media_type', 'patch-img_media_type.sql' ), array( 'do_pagelinks_update' ), array( 'do_drop_img_type' ), array( 'do_user_unique_update' ), array( 'do_user_groups_update' ), - array( 'add_field', 'site_stats', 'ss_total_pages', 'patch-ss_total_articles.sql' ), + array( 'addField', 'site_stats', 'ss_total_pages', 'patch-ss_total_articles.sql' ), array( 'addTable', 'user_newtalk', 'patch-usernewtalk2.sql' ), array( 'addTable', 'transcache', 'patch-transcache.sql' ), - array( 'add_field', 'interwiki', 'iw_trans', 'patch-interwiki-trans.sql' ), + array( 'addField', 'interwiki', 'iw_trans', 'patch-interwiki-trans.sql' ), array( 'addTable', 'trackbacks', 'patch-trackbacks.sql' ), // 1.6 array( 'do_watchlist_null' ), array( 'do_logging_timestamp_index' ), - array( 'add_field', 'ipblocks', 'ipb_range_start', 'patch-ipb_range_start.sql' ), + array( 'addField', 'ipblocks', 'ipb_range_start', 'patch-ipb_range_start.sql' ), array( 'do_page_random_update' ), - array( 'add_field', 'user', 'user_registration', 'patch-user_registration.sql' ), + array( 'addField', 'user', 'user_registration', 'patch-user_registration.sql' ), array( 'do_templatelinks_update' ), array( 'addTable', 'externallinks', 'patch-externallinks.sql' ), array( 'addTable', 'job', 'patch-job.sql' ), - array( 'add_field', 'site_stats', 'ss_images', 'patch-ss_images.sql' ), + array( 'addField', 'site_stats', 'ss_images', 'patch-ss_images.sql' ), array( 'addTable', 'langlinks', 'patch-langlinks.sql' ), array( 'addTable', 'querycache_info', 'patch-querycacheinfo.sql' ), array( 'addTable', 'filearchive', 'patch-filearchive.sql' ), - array( 'add_field', 'ipblocks', 'ipb_anon_only', 'patch-ipb_anon_only.sql' ), + array( 'addField', 'ipblocks', 'ipb_anon_only', 'patch-ipb_anon_only.sql' ), array( 'do_rc_indices_update' ), // 1.9 - array( 'add_field', 'user', 'user_newpass_time', 'patch-user_newpass_time.sql' ), + array( 'addField', 'user', 'user_newpass_time', 'patch-user_newpass_time.sql' ), array( 'addTable', 'redirect', 'patch-redirect.sql' ), array( 'addTable', 'querycachetwo', 'patch-querycachetwo.sql' ), - array( 'add_field', 'ipblocks', 'ipb_enable_autoblock', 'patch-ipb_optional_autoblock.sql' ), + array( 'addField', 'ipblocks', 'ipb_enable_autoblock', 'patch-ipb_optional_autoblock.sql' ), array( 'do_backlinking_indices_update' ), - array( 'add_field', 'recentchanges', 'rc_old_len', 'patch-rc_len.sql' ), - array( 'add_field', 'user', 'user_editcount', 'patch-user_editcount.sql' ), + array( 'addField', 'recentchanges', 'rc_old_len', 'patch-rc_len.sql' ), + array( 'addField', 'user', 'user_editcount', 'patch-user_editcount.sql' ), // 1.10 array( 'do_restrictions_update' ), - array( 'add_field', 'logging', 'log_id', 'patch-log_id.sql' ), - array( 'add_field', 'revision', 'rev_parent_id', 'patch-rev_parent_id.sql' ), - array( 'add_field', 'page_restrictions', 'pr_id', 'patch-page_restrictions_sortkey.sql' ), - array( 'add_field', 'revision', 'rev_len', 'patch-rev_len.sql' ), - array( 'add_field', 'recentchanges', 'rc_deleted', 'patch-rc_deleted.sql' ), - array( 'add_field', 'logging', 'log_deleted', 'patch-log_deleted.sql' ), - array( 'add_field', 'archive', 'ar_deleted', 'patch-ar_deleted.sql' ), - array( 'add_field', 'ipblocks', 'ipb_deleted', 'patch-ipb_deleted.sql' ), - array( 'add_field', 'filearchive', 'fa_deleted', 'patch-fa_deleted.sql' ), - array( 'add_field', 'archive', 'ar_len', 'patch-ar_len.sql' ), + array( 'addField', 'logging', 'log_id', 'patch-log_id.sql' ), + array( 'addField', 'revision', 'rev_parent_id', 'patch-rev_parent_id.sql' ), + array( 'addField', 'page_restrictions', 'pr_id', 'patch-page_restrictions_sortkey.sql' ), + array( 'addField', 'revision', 'rev_len', 'patch-rev_len.sql' ), + array( 'addField', 'recentchanges', 'rc_deleted', 'patch-rc_deleted.sql' ), + array( 'addField', 'logging', 'log_deleted', 'patch-log_deleted.sql' ), + array( 'addField', 'archive', 'ar_deleted', 'patch-ar_deleted.sql' ), + array( 'addField', 'ipblocks', 'ipb_deleted', 'patch-ipb_deleted.sql' ), + array( 'addField', 'filearchive', 'fa_deleted', 'patch-fa_deleted.sql' ), + array( 'addField', 'archive', 'ar_len', 'patch-ar_len.sql' ), // 1.11 - array( 'add_field', 'ipblocks', 'ipb_block_email', 'patch-ipb_emailban.sql' ), + array( 'addField', 'ipblocks', 'ipb_block_email', 'patch-ipb_emailban.sql' ), array( 'do_categorylinks_indices_update' ), - array( 'add_field', 'oldimage', 'oi_metadata', 'patch-oi_metadata.sql' ), + array( 'addField', 'oldimage', 'oi_metadata', 'patch-oi_metadata.sql' ), array( 'do_archive_user_index' ), array( 'do_image_user_index' ), array( 'do_oldimage_user_index' ), - array( 'add_field', 'archive', 'ar_page_id', 'patch-archive-page_id.sql' ), - array( 'add_field', 'image', 'img_sha1', 'patch-img_sha1.sql' ), + array( 'addField', 'archive', 'ar_page_id', 'patch-archive-page_id.sql' ), + array( 'addField', 'image', 'img_sha1', 'patch-img_sha1.sql' ), // 1.12 array( 'addTable', 'protected_titles', 'patch-protected_titles.sql' ), // 1.13 - array( 'add_field', 'ipblocks', 'ipb_by_text', 'patch-ipb_by_text.sql' ), + array( 'addField', 'ipblocks', 'ipb_by_text', 'patch-ipb_by_text.sql' ), array( 'addTable', 'page_props', 'patch-page_props.sql' ), array( 'addTable', 'updatelog', 'patch-updatelog.sql' ), array( 'addTable', 'category', 'patch-category.sql' ), array( 'do_category_population' ), - array( 'add_field', 'archive', 'ar_parent_id', 'patch-ar_parent_id.sql' ), - array( 'add_field', 'user_newtalk', 'user_last_timestamp', 'patch-user_last_timestamp.sql' ), + array( 'addField', 'archive', 'ar_parent_id', 'patch-ar_parent_id.sql' ), + array( 'addField', 'user_newtalk', 'user_last_timestamp', 'patch-user_last_timestamp.sql' ), array( 'do_populate_parent_id' ), array( 'check_bin', 'protected_titles', 'pt_title', 'patch-pt_title-encoding.sql', ), array( 'maybe_do_profiling_memory_update' ), array( 'do_filearchive_indices_update' ), // 1.14 - array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ), + array( 'addField', '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( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ), // 1.15 array( 'do_unique_pl_tl_il' ), @@ -140,12 +140,12 @@ class MysqlUpdater extends DatabaseUpdater { array( 'addTable', 'user_properties', 'patch-user_properties.sql' ), array( 'addTable', 'log_search', 'patch-log_search.sql' ), array( 'do_log_search_population' ), - array( 'add_field', 'logging', 'log_user_text', 'patch-log_user_text.sql' ), + array( 'addField', 'logging', 'log_user_text', 'patch-log_user_text.sql' ), array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ), array( 'addTable', 'external_user', 'patch-external_user.sql' ), - array( 'add_index', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ), - array( 'add_index', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ), - array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ), + array( 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ), + array( 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ), + array( 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ), array( 'do_update_transcache_field' ), array( 'rename_eu_wiki_id' ), array( 'do_update_mime_minor_field' ), @@ -153,12 +153,12 @@ class MysqlUpdater extends DatabaseUpdater { // 1.17 array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ), - array( 'add_index', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ), - array( 'add_field', 'updatelog', 'ul_value', 'patch-ul_value.sql' ), - array( 'add_field', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ), + array( 'addIndex', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ), + array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ), + array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ), array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ), array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix_from_title', 'patch-kill-iwl_pft.sql' ), - array( 'add_field', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ), + array( 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ), array( 'do_collation_update' ), ); } diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index c4b67717ef..86624e6f58 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -11,9 +11,9 @@ class SqliteUpdater extends DatabaseUpdater { protected function getCoreUpdateList() { return array( // 1.14 - array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ), + array( 'addField', '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( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ), array( 'sqlite_initial_indexes' ), // 1.15 @@ -25,20 +25,20 @@ class SqliteUpdater extends DatabaseUpdater { array( 'addTable', 'user_properties', 'patch-user_properties.sql' ), array( 'addTable', 'log_search', 'patch-log_search.sql' ), array( 'do_log_search_population' ), - array( 'add_field', 'logging', 'log_user_text', 'patch-log_user_text.sql' ), + array( 'addField', 'logging', 'log_user_text', 'patch-log_user_text.sql' ), array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ), array( 'addTable', 'external_user', 'patch-external_user.sql' ), - array( 'add_index', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ), - array( 'add_index', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ), - array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ), + array( 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ), + array( 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ), + array( 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ), array( 'do_update_transcache_field' ), array( 'sqlite_setup_searchindex' ), // 1.17 array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ), - array( 'add_index', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ), - array( 'add_field', 'updatelog', 'ul_value', 'patch-ul_value.sql' ), - array( 'add_field', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ), + array( 'addIndex', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ), + array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ), + array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ), array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ), array( 'drop_index_if_exists', 'iwlinks', 'iwl_prefix_from_title', 'patch-kill-iwl_pft.sql' ), ); diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index e941f65792..5fb727a06e 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -60,38 +60,6 @@ function modify_field( $table, $field, $patch, $fullpath = false ) { } } -function add_field( $table, $field, $patch, $fullpath = false ) { - global $wgDatabase; - if ( !$wgDatabase->tableExists( $table ) ) { - wfOut( "...$table table does not exist, skipping new field patch\n" ); - } elseif ( $wgDatabase->fieldExists( $table, $field ) ) { - wfOut( "...have $field field in $table table.\n" ); - } else { - wfOut( "Adding $field field to table $table..." ); - if ( $fullpath ) { - $wgDatabase->sourceFile( $patch ); - } else { - $wgDatabase->sourceFile( archive( $patch ) ); - } - wfOut( "ok\n" ); - } -} - -function add_index( $table, $index, $patch, $fullpath = false ) { - global $wgDatabase; - if ( $wgDatabase->indexExists( $table, $index ) ) { - wfOut( "...$index key already set on $table table.\n" ); - } else { - wfOut( "Adding $index key to table $table... " ); - if ( $fullpath ) { - $wgDatabase->sourceFile( $patch ); - } else { - $wgDatabase->sourceFile( archive( $patch ) ); - } - wfOut( "ok\n" ); - } -} - function drop_index_if_exists( $table, $index, $patch, $fullpath = false ) { global $wgDatabase; if ( $wgDatabase->indexExists( $table, $index ) ) {