diff options
author | mkanat%kerio.com <> | 2005-03-23 08:40:15 +0000 |
---|---|---|
committer | mkanat%kerio.com <> | 2005-03-23 08:40:15 +0000 |
commit | da96210ae8c7537d8d878ab66d2b44225a0ba996 (patch) | |
tree | 1c84921bf52b58631ffed4dde303707b9a080400 /checksetup.pl | |
parent | 8622c4b848ae52f13642c467ded266146cb820c7 (diff) | |
download | bugs-da96210ae8c7537d8d878ab66d2b44225a0ba996.tar bugs-da96210ae8c7537d8d878ab66d2b44225a0ba996.tar.gz bugs-da96210ae8c7537d8d878ab66d2b44225a0ba996.tar.bz2 bugs-da96210ae8c7537d8d878ab66d2b44225a0ba996.tar.xz bugs-da96210ae8c7537d8d878ab66d2b44225a0ba996.zip |
Bug 283403: checksetup fails to upgrade from Bugzilla 2.8
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=LpSolit. a=justdave
Diffstat (limited to 'checksetup.pl')
-rwxr-xr-x | checksetup.pl | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/checksetup.pl b/checksetup.pl index 07367f0c3..f75f6a928 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -2336,16 +2336,27 @@ $dbh->bz_add_field('products', 'votestoconfirm', 'smallint not null'); # 2000-03-21 Adding a table for target milestones to # database - matthew@zeroknowledge.com - -$sth = $dbh->prepare("SELECT count(*) from milestones"); -$sth->execute(); -if (!($sth->fetchrow_arrayref()->[0])) { +# If the milestones table is empty, and we're still back in a Bugzilla +# that has a bugs.product field, that means that we just created +# the milestones table and it needs to be populated. +my $milestones_exist = $dbh->selectrow_array("SELECT 1 FROM milestones"); +if (!$milestones_exist && $dbh->bz_get_field_def('bugs', 'product')) { print "Replacing blank milestones...\n"; + $dbh->do("UPDATE bugs " . "SET target_milestone = '---', delta_ts=delta_ts " . "WHERE target_milestone = ' '"); - -# Populate the milestone table with all existing values in the database + + # If we are upgrading from 2.8 or earlier, we will have *created* + # the milestones table with a product_id field, but Bugzilla expects + # it to have a "product" field. So we change the field backward so + # other code can run. The change will be reversed later in checksetup. + if ($dbh->bz_get_field_def('milestones', 'product_id')) { + $dbh->bz_drop_field('milestones', 'product_id'); + $dbh->bz_add_field('milestones', 'product', 'varchar(64) not null'); + } + + # Populate the milestone table with all existing values in the database $sth = $dbh->prepare("SELECT DISTINCT target_milestone, product FROM bugs"); $sth->execute(); @@ -2985,15 +2996,18 @@ if ($dbh->bz_get_field_def("profiles", "groupset")) { VALUES($uid, $gid, 0, " . GRANT_DIRECT . ")"); } } - # Create user can bless group grants for old groupsets. - # Get each user with the old blessgroupset bit set - $sth2 = $dbh->prepare("SELECT userid FROM profiles - WHERE (blessgroupset & $bit) != 0"); - $sth2->execute(); - while (my ($uid) = $sth2->fetchrow_array) { - $dbh->do("INSERT INTO user_group_map - (user_id, group_id, isbless, grant_type) - VALUES($uid, $gid, 1, " . GRANT_DIRECT . ")"); + # Create user can bless group grants for old groupsets, but only + # if we're upgrading from a Bugzilla that had blessing. + if($dbh->bz_get_field_def('profiles', 'blessgroupset')) { + # Get each user with the old blessgroupset bit set + $sth2 = $dbh->prepare("SELECT userid FROM profiles + WHERE (blessgroupset & $bit) != 0"); + $sth2->execute(); + while (my ($uid) = $sth2->fetchrow_array) { + $dbh->do("INSERT INTO user_group_map + (user_id, group_id, isbless, grant_type) + VALUES($uid, $gid, 1, " . GRANT_DIRECT . ")"); + } } # Create bug_group_map records for old groupsets. # Get each bug with the old group bit set. |