]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Back out bug bug 290089, which causes checksetup to fail on a newly-created DB.
authormkanat%kerio.com <>
Thu, 14 Apr 2005 15:35:45 +0000 (15:35 +0000)
committermkanat%kerio.com <>
Thu, 14 Apr 2005 15:35:45 +0000 (15:35 +0000)
Bugzilla/DB/Mysql.pm
checksetup.pl

index d80b1bbbbef2877db5eb535e9f43ff695e4dda45..1d10838e9d81957f255dbb444cd519451d3ea74e 100644 (file)
@@ -371,79 +371,6 @@ sub bz_setup_database {
         } # foreach table
     } # if old-name indexes
 
-    # The old timestamp fields need to be adjusted here instead of in
-    # checksetup. Otherwise the UPDATE statements inside of bz_add_column
-    # will cause accidental timestamp updates.
-    # The code that does this was moved here from checksetup.
-
-    # 2002-08-14 - bbaetz@student.usyd.edu.au - bug 153578
-    # attachments creation time needs to be a datetime, not a timestamp
-    my $attach_creation = 
-        $self->bz_get_field_def("attachments", "creation_ts");
-    if ($attach_creation && $attach_creation->[1] =~ /^timestamp/) {
-        print "Fixing creation time on attachments...\n";
-
-        my $sth = $self->prepare("SELECT COUNT(attach_id) FROM attachments");
-        $sth->execute();
-        my ($attach_count) = $sth->fetchrow_array();
-
-        if ($attach_count > 1000) {
-            print "This may take a while...\n";
-        }
-        my $i = 0;
-
-        # This isn't just as simple as changing the field type, because
-        # the creation_ts was previously updated when an attachment was made
-        # obsolete from the attachment creation screen. So we have to go
-        # and recreate these times from the comments..
-        $sth = $self->prepare("SELECT bug_id, attach_id, submitter_id " .
-                               "FROM attachments");
-        $sth->execute();
-
-        # Restrict this as much as possible in order to avoid false 
-        # positives, and keep the db search time down
-        my $sth2 = $self->prepare("SELECT bug_when FROM longdescs 
-                                    WHERE bug_id=? AND who=? 
-                                          AND thetext LIKE ?
-                                 ORDER BY bug_when " . $self->sql_limit(1));
-        while (my ($bug_id, $attach_id, $submitter_id) 
-                  = $sth->fetchrow_array()) 
-        {
-            $sth2->execute($bug_id, $submitter_id, 
-                "Created an attachment (id=$attach_id)%");
-            my ($when) = $sth2->fetchrow_array();
-            if ($when) {
-                $self->do("UPDATE attachments " .
-                             "SET creation_ts='$when' " .
-                           "WHERE attach_id=$attach_id");
-            } else {
-                print "Warning - could not determine correct creation"
-                      . " time for attachment $attach_id on bug $bug_id\n";
-            }
-            ++$i;
-            print "Converted $i of $attach_count attachments\n" if !($i % 1000);
-        }
-        print "Done - converted $i attachments\n";
-
-        $self->bz_change_field_type("attachments", "creation_ts", 
-            'datetime NOT NULL');
-    }
-
-    # 2004-08-29 - Tomas.Kopal@altap.cz, bug 257303
-    # Change logincookies.lastused type from timestamp to datetime
-    my $login_lastused = $self->bz_get_field_def("logincookies", "lastused");
-    if ($login_lastused && $login_lastused->[1] =~ /^timestamp/) {
-        $self->bz_change_field_type('logincookies', 'lastused', 
-                                    'DATETIME NOT NULL');
-    }
-
-    # 2005-01-17 - Tomas.Kopal@altap.cz, bug 257315
-    # Change bugs.delta_ts type from timestamp to datetime 
-    my $bugs_deltats = $self->bz_get_field_def("bugs", "delta_ts");
-    if ($bugs_deltats && $bugs_deltats->[1] =~ /^timestamp/) {
-        $self->bz_change_field_type('bugs', 'delta_ts', 'DATETIME NOT NULL');
-    }
-
     $self->SUPER::bz_setup_database();
 }
 
index 95746c720e593c7845e63fd237d6acc604ce110c..f64bd350a338b40774de61638c4fd7c6c4548a93 100755 (executable)
@@ -1921,7 +1921,7 @@ if (!$dbh->bz_get_field_def('bugs', 'keywords')) {
 
     my @kwords;
     print "Making sure 'keywords' field of table 'bugs' is empty ...\n";
-    $dbh->do("UPDATE bugs SET keywords = '' " .
+    $dbh->do("UPDATE bugs SET delta_ts = delta_ts, keywords = '' " .
               "WHERE keywords != ''");
     print "Repopulating 'keywords' field of table 'bugs' ...\n";
     my $sth = $dbh->prepare("SELECT keywords.bug_id, keyworddefs.name " .
@@ -1936,7 +1936,7 @@ if (!$dbh->bz_get_field_def('bugs', 'keywords')) {
         my ($b, $k) = ($sth->fetchrow_array());
         if (!defined $b || $b ne $bugid) {
             if (@list) {
-                $dbh->do("UPDATE bugs SET keywords = " .
+                $dbh->do("UPDATE bugs SET delta_ts = delta_ts, keywords = " .
                          $dbh->quote(join(', ', @list)) .
                          " WHERE bug_id = $bugid");
             }
@@ -2135,7 +2135,7 @@ if ($dbh->bz_get_field_def('bugs_activity', 'field')) {
 
 if (!$dbh->bz_get_field_def('bugs', 'lastdiffed')) {
     $dbh->bz_add_field('bugs', 'lastdiffed', 'datetime');
-    $dbh->do('UPDATE bugs SET lastdiffed = now()');
+    $dbh->do('UPDATE bugs SET lastdiffed = now(), delta_ts = delta_ts');
 }
 
 
@@ -2172,7 +2172,11 @@ if ($dbh->bz_get_index_def('profiles', 'login_name')->[1]) {
                        ["longdescs", "who"]) {
             my ($table, $field) = (@$i);
             print "   Updating $table.$field ...\n";
-            $dbh->do("UPDATE $table SET $field = $u1 " .
+            my $extra = "";
+            if ($table eq "bugs") {
+                $extra = ", delta_ts = delta_ts";
+            }
+            $dbh->do("UPDATE $table SET $field = $u1 $extra " .
                       "WHERE $field = $u2");
         }
         $dbh->do("DELETE FROM profiles WHERE userid = $u2");
@@ -2274,7 +2278,7 @@ if (($_ = $dbh->bz_get_field_def('components', 'initialqacontact')) and
 
 if (!$dbh->bz_get_field_def('bugs', 'everconfirmed')) {
     $dbh->bz_add_field('bugs', 'everconfirmed',  'tinyint not null');
-    $dbh->do("UPDATE bugs SET everconfirmed = 1");
+    $dbh->do("UPDATE bugs SET everconfirmed = 1, delta_ts = delta_ts");
 }
 $dbh->bz_add_field('products', 'maxvotesperbug', 'smallint not null default 10000');
 $dbh->bz_add_field('products', 'votestoconfirm', 'smallint not null');
@@ -2291,7 +2295,7 @@ if (!$milestones_exist && $dbh->bz_get_field_def('bugs', 'product')) {
     print "Replacing blank milestones...\n";
 
     $dbh->do("UPDATE bugs " .
-             "SET target_milestone = '---' " .
+             "SET target_milestone = '---', delta_ts=delta_ts " .
              "WHERE target_milestone = ' '");
 
     # If we are upgrading from 2.8 or earlier, we will have *created*
@@ -2768,7 +2772,7 @@ if ($dbh->bz_get_field_def("products", "product")) {
                  "WHERE program = " . $dbh->quote($product));
         $dbh->do("UPDATE milestones SET product_id = $product_id " .
                  "WHERE product = " . $dbh->quote($product));
-        $dbh->do("UPDATE bugs SET product_id = $product_id " .
+        $dbh->do("UPDATE bugs SET product_id = $product_id, delta_ts=delta_ts " .
                  "WHERE product = " . $dbh->quote($product));
         $dbh->do("UPDATE attachstatusdefs SET product_id = $product_id " .
                  "WHERE product = " . $dbh->quote($product)) if $dbh->bz_table_exists("attachstatusdefs");
@@ -2791,7 +2795,7 @@ if ($dbh->bz_get_field_def("products", "product")) {
             $components{$component} = {};
         }
         $components{$component}{$product_id} = 1;
-        $dbh->do("UPDATE bugs SET component_id = $component_id " .
+        $dbh->do("UPDATE bugs SET component_id = $component_id, delta_ts=delta_ts " .
                   "WHERE component = " . $dbh->quote($component) .
                    " AND product_id = $product_id");
     }
@@ -2825,6 +2829,53 @@ if ($dbh->bz_get_field_def("products", "product")) {
     $dbh->do("CREATE INDEX components_name_idx ON components(name)");
 }
 
+# 2002-08-14 - bbaetz@student.usyd.edu.au - bug 153578
+# attachments creation time needs to be a datetime, not a timestamp
+my $fielddef;
+if (($fielddef = $dbh->bz_get_field_def("attachments", "creation_ts")) &&
+    $fielddef->[1] =~ /^timestamp/) {
+    print "Fixing creation time on attachments...\n";
+
+    my $sth = $dbh->prepare("SELECT COUNT(attach_id) FROM attachments");
+    $sth->execute();
+    my ($attach_count) = $sth->fetchrow_array();
+
+    if ($attach_count > 1000) {
+        print "This may take a while...\n";
+    }
+    my $i = 0;
+
+    # This isn't just as simple as changing the field type, because
+    # the creation_ts was previously updated when an attachment was made
+    # obsolete from the attachment creation screen. So we have to go
+    # and recreate these times from the comments..
+    $sth = $dbh->prepare("SELECT bug_id, attach_id, submitter_id " .
+                           "FROM attachments");
+    $sth->execute();
+
+    # Restrict this as much as possible in order to avoid false positives, and
+    # keep the db search time down
+    my $sth2 = $dbh->prepare("SELECT bug_when FROM longdescs " .
+                              "WHERE bug_id=? AND who=? AND thetext LIKE ? " .
+                           "ORDER BY bug_when " . $dbh->sql_limit(1));
+    while (my ($bug_id, $attach_id, $submitter_id) = $sth->fetchrow_array()) {
+        $sth2->execute($bug_id, $submitter_id, "Created an attachment (id=$attach_id)%");
+        my ($when) = $sth2->fetchrow_array();
+        if ($when) {
+            $dbh->do("UPDATE attachments " .
+                        "SET creation_ts='$when' " .
+                      "WHERE attach_id=$attach_id");
+        } else {
+            print "Warning - could not determine correct creation time for attachment $attach_id on bug $bug_id\n";
+        }
+        ++$i;
+        print "Converted $i of $attach_count attachments\n" if !($i % 1000);
+    }
+    print "Done - converted $i attachments\n";
+
+    $dbh->bz_change_field_type("attachments", "creation_ts", "datetime NOT NULL");
+}
+
 # 2002-09-22 - bugreport@peshkin.net - bug 157756
 #
 # If the whole groups system is new, but the installation isn't, 
@@ -3667,6 +3718,13 @@ if ($dbh->bz_get_field_def('bugs', 'short_desc')->[2]) { # if it allows nulls
 # Support classification level
 $dbh->bz_add_field('products', 'classification_id', 'smallint NOT NULL DEFAULT 1');
 
+# 2004-08-29 - Tomas.Kopal@altap.cz, bug 257303
+# Change logincookies.lastused type from timestamp to datetime
+if (($fielddef = $dbh->bz_get_field_def("logincookies", "lastused")) &&
+    $fielddef->[1] =~ /^timestamp/) {
+    $dbh->bz_change_field_type('logincookies', 'lastused', 'DATETIME NOT NULL');
+}
+
 # 2005-01-12 Nick Barnes <nb@ravenbrook.com> bug 278010
 # Rename any group which has an empty name.
 # Note that there can be at most one such group (because of
@@ -3697,6 +3755,13 @@ if ($emptygroupid) {
     print "Group $emptygroupid had an empty name; renamed as '$trygroupname'.\n";
 }
 
+# 2005-01-17 - Tomas.Kopal@altap.cz, bug 257315
+# Change bugs.delta_ts type from timestamp to datetime
+if (($fielddef = $dbh->bz_get_field_def("bugs", "delta_ts")) &&
+    $fielddef->[1] =~ /^timestamp/) {
+    $dbh->bz_change_field_type('bugs', 'delta_ts', 'DATETIME NOT NULL');
+}
+
 # 2005-02-12 bugreport@peshkin.net, bug 281787
 if (!defined $dbh->bz_get_index_def('attachments','submitter_id')) {
     print "Adding index for submitter_id column in attachments table...\n";