From: Dave Miller Date: Tue, 14 May 2024 06:29:09 +0000 (-0400) Subject: [harmony] Bug 1634711: Backport Bug 1526703 from 5.0.6 - Increase the size of the... X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=1351e2c889796c57325d8152db820bcd4f9f11f6;p=thirdparty%2Fbugzilla.git [harmony] Bug 1634711: Backport Bug 1526703 from 5.0.6 - Increase the size of the flagtype id column (#130) --- 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..5ee99dcf4 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 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) = (@_); diff --git a/extensions/FlagTypeComment/Extension.pm b/extensions/FlagTypeComment/Extension.pm index fabbb9bee..9cb0e7fcb 100644 --- a/extensions/FlagTypeComment/Extension.pm +++ b/extensions/FlagTypeComment/Extension.pm @@ -42,7 +42,7 @@ sub db_schema_abstract_schema { $args->{'schema'}->{'flagtype_comments'} = { FIELDS => [ type_id => { - TYPE => 'INT2', + TYPE => 'INT3', NOTNULL => 1, REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'} }, @@ -53,6 +53,19 @@ sub db_schema_abstract_schema { }; } +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 # ############# diff --git a/extensions/Review/Extension.pm b/extensions/Review/Extension.pm index fa4900ff2..45ee8b0cb 100644 --- a/extensions/Review/Extension.pm +++ b/extensions/Review/Extension.pm @@ -856,7 +856,7 @@ sub db_schema_abstract_schema { flag_when => {TYPE => 'DATETIME', NOTNULL => 1,}, type_id => { - TYPE => 'INT2', + TYPE => 'INT3', NOTNULL => 1, REFERENCES => {TABLE => 'flagtypes', COLUMN => 'id', DELETE => 'CASCADE'} }, @@ -954,6 +954,15 @@ sub install_update_db { # 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 {