]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 285692: lastdiffed should use NULL instead of the "beginning of time"
authormkanat%kerio.com <>
Sat, 12 Mar 2005 03:45:01 +0000 (03:45 +0000)
committermkanat%kerio.com <>
Sat, 12 Mar 2005 03:45:01 +0000 (03:45 +0000)
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=glob, a=myk

Bugzilla/BugMail.pm
Bugzilla/DB/Schema.pm
checksetup.pl
contrib/sendunsentbugmail.pl
editproducts.cgi
globals.pl
sanitycheck.cgi

index 1221dcfbc4c3291bcebb4f01625d1815f05a3849..ba7c641df84356c5fee11185f7fd288ab36f651d 100644 (file)
@@ -172,9 +172,6 @@ sub ProcessOneBug($) {
     $values{component} = get_component_name($values{component_id});
 
     my ($start, $end) = (@row);
-    # $start and $end are considered safe because users can't touch them
-    trick_taint($start);
-    trick_taint($end);
 
     my $cc_ref = Bugzilla->dbh->selectcol_arrayref(
         q{SELECT profiles.login_name FROM cc, profiles
@@ -220,15 +217,16 @@ sub ProcessOneBug($) {
 
     my @diffs;
 
-
+    # If lastdiffed is NULL, then we don't limit the search on time.
+    my $when_restriction = $start ? 
+        " AND bug_when > '$start' AND bug_when <= '$end'" : '';
     SendSQL("SELECT profiles.login_name, fielddefs.description, " .
             "       bug_when, removed, added, attach_id, fielddefs.name " .
             "FROM bugs_activity, fielddefs, profiles " .
             "WHERE bug_id = $id " .
             "  AND fielddefs.fieldid = bugs_activity.fieldid " .
             "  AND profiles.userid = who " .
-            "  AND bug_when > '$start' " .
-            "  AND bug_when <= '$end' " .
+            $when_restriction .
             "ORDER BY bug_when"
             );
 
@@ -280,8 +278,7 @@ sub ProcessOneBug($) {
             "  AND fielddefs.fieldid = bugs_activity.fieldid" .
             "  AND (fielddefs.name = 'bug_status' " .
             "    OR fielddefs.name = 'resolution') " .
-            "  AND bug_when > '$start' " .
-            "  AND bug_when <= '$end' " .
+            $when_restriction .
             "ORDER BY bug_when, bug_id");
     
     my $thisdiff = "";
@@ -829,7 +826,7 @@ sub NewProcessOnePerson ($$$$$$$$$$$$$) {
         }
     }
 
-    my $isnew = ($start !~ m/[1-9]/);
+    my $isnew = !$start;
     
     my %substs;
 
index a879684ea5f75903fca94e24b81d6a851311d141..9a156a1b0ebfd6571d503bb0d8c3e6f8421beb47 100644 (file)
@@ -154,7 +154,7 @@ use constant ABSTRACT_SCHEMA => {
             # comes from the keywords table
             keywords            => {TYPE => 'MEDIUMTEXT', NOTNULL => 1,
                                     DEFAULT => "''"},
-            lastdiffed          => {TYPE => 'DATETIME', NOTNULL => 1},
+            lastdiffed          => {TYPE => 'DATETIME'},
             everconfirmed       => {TYPE => 'BOOLEAN', NOTNULL => 1},
             reporter_accessible => {TYPE => 'BOOLEAN',
                                     NOTNULL => 1, DEFAULT => 'TRUE'},
index dcf6a30afa937f4c676a5f2f3e9f12b8e591abdc..f93b3349a74a91964798483653d048f3a7a58849 100755 (executable)
@@ -2180,7 +2180,7 @@ if ($dbh->bz_get_field_def('bugs_activity', 'field')) {
 #   http://bugzilla.mozilla.org/show_bugs.cgi?id=71552
 
 if (!$dbh->bz_get_field_def('bugs', 'lastdiffed')) {
-    $dbh->bz_add_field('bugs', 'lastdiffed', 'datetime not null');
+    $dbh->bz_add_field('bugs', 'lastdiffed', 'datetime');
     $dbh->do('UPDATE bugs SET lastdiffed = now(), delta_ts = delta_ts');
 }
 
@@ -3846,10 +3846,13 @@ $dbh->bz_change_field_type('bugs', 'votes', 'mediumint not null default 0');
 # 2005-03-03 travis@sedsystems.ca -- Bug 41972
 add_setting ("display_quips", {"on" => 1, "off" => 2 }, "on" );
 
+$dbh->bz_change_field_type('bugs', 'lastdiffed', 'datetime');
+
 } # END LEGACY CHECKS
 
 
 
+
 # If you had to change the --TABLE-- definition in any way, then add your
 # differential change code *** A B O V E *** this comment.
 #
index 35b6a494131ac84f660fb3f43e51853064660575..9184e0be22da9811a12b9fbae5f0cae73c9b4f51 100644 (file)
@@ -30,8 +30,10 @@ use Bugzilla::Constants;
 use Bugzilla::BugMail;
 
 my $dbh = Bugzilla->dbh;
-SendSQL("SELECT bug_id FROM bugs WHERE lastdiffed < delta_ts AND 
-         delta_ts < NOW() - " . $dbh->sql_interval('30 minute') .
+SendSQL("SELECT bug_id FROM bugs 
+          WHERE lastdiffed IS NULL
+                OR lastdiffed < delta_ts AND  delta_ts < NOW() - " 
+                 . $dbh->sql_interval('30 minute') .
         " ORDER BY bug_id");
 my @list;
 while (MoreSQLData()) {
index ea4bc5e5bdd986429f02e2b456d64fb2f0514e0a..de0c874e2d7bc72ef6c4bfc1fab3a56956f27436 100755 (executable)
@@ -1187,7 +1187,7 @@ if ($action eq 'updategroupcontrols') {
             LogActivityEntry($bugid, "bug_group", $removed, "",
                              $::userid, $timestamp);
             my $diffed = "";
-            if ($mailiscurrent != 0) {
+            if ($mailiscurrent) {
                 $diffed = ", lastdiffed = " . SqlQuote($timestamp);
             }
             SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) .
@@ -1221,7 +1221,7 @@ if ($action eq 'updategroupcontrols') {
             LogActivityEntry($bugid, "bug_group", "", $added,
                              $::userid, $timestamp);
             my $diffed = "";
-            if ($mailiscurrent != 0) {
+            if ($mailiscurrent) {
                 $diffed = ", lastdiffed = " . SqlQuote($timestamp);
             }
             SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) .
index b0a8feca80c5edda1f09a8b93407c02e8f9f620b..6e0ebd774ab3406898e883f5c5e4f8c82f706050 100644 (file)
@@ -924,15 +924,16 @@ sub GetLongDescriptionAsText {
                    "WHERE  profiles.userid = longdescs.who " .
                    "AND    longdescs.bug_id = $id ");
 
-    if ($start && $start =~ /[1-9]/) {
-        # If $start is not all zeros, obtain the count-index
+    # $start will be undef for New bugs, and defined for pre-existing bugs.
+    if ($start) {
+        # If $start is not NULL, obtain the count-index
         # of this comment for the leading "Comment #xxx" line.)
-        $query .= "AND longdescs.bug_when > '$start'";
-        SendSQL("SELECT count(*) FROM longdescs WHERE bug_id = $id AND bug_when <= '$start'");
+        SendSQL("SELECT count(*) FROM longdescs " .
+                " WHERE bug_id = $id AND bug_when <= '$start'");
         ($count) = (FetchSQLData());
-    }
-    if ($end) {
-        $query .= "AND longdescs.bug_when <= '$end'";
+         
+        $query .= " AND longdescs.bug_when > '$start'"
+                . " AND longdescs.bug_when <= '$end' ";
     }
 
     $query .= "ORDER BY longdescs.bug_when";
index 30a07be5bac8acd2f5670ce4b5de32471ca8d595..2a51a316963054f983be9038e2ce50d30e23df6f 100755 (executable)
@@ -178,7 +178,8 @@ if (defined $cgi->param('rescanallBugMail')) {
     require Bugzilla::BugMail;
 
     Status("OK, now attempting to send unsent mail");
-    SendSQL("SELECT bug_id FROM bugs WHERE lastdiffed < delta_ts AND 
+    SendSQL("SELECT bug_id FROM bugs 
+              WHERE (lastdiffed IS NULL OR lastdiffed < delta_ts) AND
              delta_ts < now() - " . $dbh->sql_interval('30 minute') .
             " ORDER BY bug_id");
     my @list;
@@ -737,7 +738,7 @@ Status("Checking for unsent mail");
 @badbugs = ();
 
 SendSQL("SELECT bug_id " .
-        "FROM bugs WHERE lastdiffed < delta_ts AND ".
+        "FROM bugs WHERE (lastdiffed IS NULL OR lastdiffed < delta_ts) AND " .
         "delta_ts < now() - " . $dbh->sql_interval('30 minute') .
         " ORDER BY bug_id");