[ '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
+ [ 'addTable', 'change_tag_def', 'patch-change_tag_def.sql' ],
+ [ 'populateExternallinksIndex60' ],
+ [ 'dropDefault', 'externallinks', 'el_index_60' ],
+ [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ],
+ [ 'addPgField', 'change_tag', 'ct_tag_id', 'INTEGER NULL' ],
+ [
+ 'addPgIndex',
+ 'change_tag',
+ 'change_tag_tag_id_id',
+ '( ct_tag_id, ct_rc_id, ct_rev_id, ct_log_id )'
+ ],
+ [ 'addPgIndex', 'archive', 'ar_revid_uniq', '(ar_rev_id)', 'unique' ],
+ [ 'dropPgIndex', 'archive', 'ar_revid' ], // Probably doesn't exist, but do it anyway.
];
}
}
}
+ /**
+ * Drop a default value from a field
+ * @since 1.32
+ * @param string $table
+ * @param string $field
+ */
+ protected function dropDefault( $table, $field ) {
+ $info = $this->db->fieldInfo( $table, $field );
+ if ( $info->defaultValue() !== false ) {
+ $this->output( "Removing '$table.$field' default value\n" );
+ $this->db->query( "ALTER TABLE $table ALTER $field DROP DEFAULT" );
+ }
+ }
+
protected function changeNullableField( $table, $field, $null, $update = false ) {
$fi = $this->db->fieldInfo( $table, $field );
if ( is_null( $fi ) ) {
}
}
- public function addPgIndex( $table, $index, $type ) {
+ public function addPgIndex( $table, $index, $type, $unique = false ) {
if ( $this->db->indexExists( $table, $index ) ) {
$this->output( "...index '$index' on table '$table' already exists\n" );
} else {
$this->output( "Creating index '$index' on table '$table' $type\n" );
- $this->db->query( "CREATE INDEX $index ON $table $type" );
+ $unique = $unique ? 'UNIQUE' : '';
+ $this->db->query( "CREATE $unique INDEX $index ON $table $type" );
}
}