[ 'addSequence', 'externallinks', false, 'externallinks_el_id_seq' ],
[ 'addSequence', 'watchlist', false, 'watchlist_wl_id_seq' ],
[ 'addSequence', 'change_tag', false, 'change_tag_ct_id_seq' ],
- [ 'addSequence', 'tag_summary', false, 'tag_summary_ts_id_seq' ],
# new tables
[ 'addTable', 'category', 'patch-category.sql' ],
[ 'addTable', 'redirect', 'patch-redirect.sql' ],
[ 'addTable', 'updatelog', 'patch-updatelog.sql' ],
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
- [ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'addTable', 'log_search', 'patch-log_search.sql' ],
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
'( rc_namespace, rc_type, rc_patrolled, rc_timestamp )' ],
[ 'addPgField', 'change_tag', 'ct_id',
"INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('change_tag_ct_id_seq')" ],
- [ 'addPgField', 'tag_summary', 'ts_id',
- "INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('tag_summary_ts_id_seq')" ],
// 1.29
[ 'addPgField', 'externallinks', 'el_index_60', "BYTEA NOT NULL DEFAULT ''" ],
[ 'setSequenceOwner', 'job', 'job_id', 'job_job_id_seq' ],
[ 'setSequenceOwner', 'category', 'cat_id', 'category_cat_id_seq' ],
[ 'setSequenceOwner', 'change_tag', 'ct_id', 'change_tag_ct_id_seq' ],
- [ 'setSequenceOwner', 'tag_summary', 'ts_id', 'tag_summary_ts_id_seq' ],
[ 'setSequenceOwner', 'sites', 'site_id', 'sites_site_id_seq' ],
// 1.32
[ 'addPgField', 'ipblocks', 'ipb_sitewide', 'SMALLINT NOT NULL DEFAULT 1' ],
[ 'addTable', 'ipblocks_restrictions', 'patch-ipblocks_restrictions-table.sql' ],
[ 'migrateImageCommentTemp' ],
+ [ 'dropPgField', 'category', 'cat_hidden' ],
+ [ 'dropPgField', 'site_stats', 'ss_admins' ],
+ [ 'dropPgField', 'recentchanges', 'rc_cur_time' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
+ [ 'dropPgField', 'archive', 'ar_comment' ],
+ [ 'dropDefault', 'archive', 'ar_comment_id' ],
+ [ 'dropPgField', 'ipblocks', 'ipb_reason' ],
+ [ 'dropDefault', 'ipblocks', 'ipb_reason_id' ],
+ [ 'dropPgField', 'image', 'img_description' ],
+ [ 'dropDefault', 'image', 'img_description_id' ],
+ [ 'dropPgField', 'oldimage', 'oi_description' ],
+ [ 'dropDefault', 'oldimage', 'oi_description_id' ],
+ [ 'dropPgField', 'filearchive', 'fa_deleted_reason' ],
+ [ 'dropDefault', 'filearchive', 'fa_deleted_reason_id' ],
+ [ 'dropPgField', 'filearchive', 'fa_description' ],
+ [ 'dropDefault', 'filearchive', 'fa_description_id' ],
+ [ 'dropPgField', 'recentchanges', 'rc_comment' ],
+ [ 'dropDefault', 'recentchanges', 'rc_comment_id' ],
+ [ 'dropPgField', 'logging', 'log_comment' ],
+ [ 'dropDefault', 'logging', 'log_comment_id' ],
+ [ 'dropPgField', 'protected_titles', 'pt_reason' ],
+ [ 'dropDefault', 'protected_titles', 'pt_reason_id' ],
];
}
protected function setDefault( $table, $field, $default ) {
$info = $this->db->fieldInfo( $table, $field );
- if ( $info->defaultValue() !== $default ) {
+ if ( $info && $info->defaultValue() !== $default ) {
$this->output( "Changing '$table.$field' default value\n" );
$this->db->query( "ALTER TABLE $table ALTER $field SET DEFAULT "
. $this->db->addQuotes( $default ) );
protected function changeNullableField( $table, $field, $null, $update = false ) {
$fi = $this->db->fieldInfo( $table, $field );
if ( is_null( $fi ) ) {
- $this->output( "...ERROR: expected column $table.$field to exist\n" );
- exit( 1 );
+ return;
}
if ( $fi->isNullable() ) {
# # It's NULL - does it need to be NOT NULL?
- if ( 'NOT NULL' === $null ) {
+ if ( $null === 'NOT NULL' ) {
$this->output( "Changing '$table.$field' to not allow NULLs\n" );
if ( $update ) {
$this->db->query( "UPDATE $table SET $field = DEFAULT WHERE $field IS NULL" );
}
} else {
# # It's NOT NULL - does it need to be NULL?
- if ( 'NULL' === $null ) {
+ if ( $null === 'NULL' ) {
$this->output( "Changing '$table.$field' to allow NULLs\n" );
$this->db->query( "ALTER TABLE $table ALTER $field DROP NOT NULL" );
} else {