diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index dc824107d..a11b9639a 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -658,7 +658,7 @@ use constant ABSTRACT_SCHEMA => { FIELDS => [ id => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1, PRIMARYKEY => 1}, type_id => { - TYPE => 'INT2', + TYPE => 'INT3', NOTNULL => 1, REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'} }, @@ -694,7 +694,7 @@ use constant ABSTRACT_SCHEMA => { # "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)'}, @@ -721,7 +721,7 @@ use constant ABSTRACT_SCHEMA => { flaginclusions => { FIELDS => [ type_id => { - TYPE => 'INT2', + TYPE => 'INT3', NOTNULL => 1, REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'} }, @@ -743,7 +743,7 @@ use constant ABSTRACT_SCHEMA => { flagexclusions => { FIELDS => [ type_id => { - TYPE => 'INT2', + TYPE => 'INT3', NOTNULL => 1, REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'} }, diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 65ef9913a..183bf1f8e 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -483,9 +483,8 @@ sub update_table_definitions { $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}); @@ -906,6 +905,30 @@ sub _update_product_name_definition { } } +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 $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) = (@_);