FIELDS => [
id => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1, PRIMARYKEY => 1},
type_id => {
- TYPE => 'INT2',
+ TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'}
},
# "flagtypes" defines the types of flags that can be set.
flagtypes => {
FIELDS => [
- id => {TYPE => 'SMALLSERIAL', NOTNULL => 1, PRIMARYKEY => 1},
+ id => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1, PRIMARYKEY => 1},
name => {TYPE => 'varchar(50)', NOTNULL => 1},
description => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
cc_list => {TYPE => 'varchar(200)'},
flaginclusions => {
FIELDS => [
type_id => {
- TYPE => 'INT2',
+ TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'}
},
flagexclusions => {
FIELDS => [
type_id => {
- TYPE => 'INT2',
+ TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'}
},
$dbh->bz_drop_column('profiles', 'refreshed_when');
$dbh->bz_drop_column('groups', 'last_changed');
- # 2006-08-06 LpSolit@gmail.com - Bug 347521
- $dbh->bz_alter_column('flagtypes', 'id',
- {TYPE => 'SMALLSERIAL', NOTNULL => 1, PRIMARYKEY => 1});
+ # 2019-01-31 dylan@hardison.net - Bug TODO
+ _update_flagtypes_id();
$dbh->bz_alter_column('keyworddefs', 'id',
{TYPE => 'SMALLSERIAL', NOTNULL => 1, PRIMARYKEY => 1});
}
}
+sub _update_flagtypes_id {
+ my $dbh = Bugzilla->dbh;
+ my @fixes = (
+ {table => 'flaginclusions', column => 'type_id'},
+ {table => 'flagexclusions', column => 'type_id'},
+ {table => 'flags', column => 'type_id'},
+ );
+ my $flagtypes_def = $dbh->bz_column_info('flagtypes', 'id');
+ foreach my $fix (@fixes) {
+ my $def = $dbh->bz_column_info($fix->{table}, $fix->{column});
+ if ($def->{TYPE} eq 'INT2') {
+ warn "Dropping foreign keys on $fix->{table}\n";
+ $dbh->bz_drop_related_fks($fix->{table}, $fix->{column});
+ $def->{TYPE} = 'INT3';
+ $dbh->bz_alter_column($fix->{table}, $fix->{column}, $def);
+ }
+ }
+
+ if ($flagtypes_def->{TYPE} eq 'SMALLSERIAL') {
+ $flagtypes_def->{TYPE} = 'MEDIUMSERIAL';
+ $dbh->bz_alter_column('flagtypes', 'id', $flagtypes_def);
+ }
+}
+
# A helper for the function below.
sub _write_one_longdesc {
my ($id, $who, $when, $buffer) = (@_);
$args->{'schema'}->{'flagtype_comments'} = {
FIELDS => [
type_id => {
- TYPE => 'INT2',
+ TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'}
},
};
}
+sub install_update_db {
+ my $dbh = Bugzilla->dbh;
+
+ # Bug 1634711 - justdave@bugzilla.org
+ my $def = $dbh->bz_column_info('flagtype_comments', 'type_id');
+ if ($def->{TYPE} eq 'INT2') {
+ warn "Dropping foreign keys on flagtype_comments\n";
+ $dbh->bz_drop_related_fks('flagtype_comments', 'type_id');
+ $def->{TYPE} = 'INT3';
+ $dbh->bz_alter_column('flagtype_comments', 'type_id', $def);
+ }
+}
+
#############
# Templates #
#############
flag_when => {TYPE => 'DATETIME', NOTNULL => 1,},
type_id => {
- TYPE => 'INT2',
+ TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'}
},
# Bug 1588221 - dkl@mozilla.com
$dbh->bz_alter_column('flag_state_activity', 'attachment_id', {TYPE => 'INT5'});
+
+ # Bug 1634711 - justdave@bugzilla.org
+ my $def = $dbh->bz_column_info('flag_state_activity', 'type_id');
+ if ($def->{TYPE} eq 'INT2') {
+ warn "Dropping foreign keys on flag_state_activity\n";
+ $dbh->bz_drop_related_fks('flag_state_activity', 'type_id');
+ $def->{TYPE} = 'INT3';
+ $dbh->bz_alter_column('flag_state_activity', 'type_id', $def);
+ }
}
sub install_filesystem {