summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkanat%kerio.com <>2005-03-12 04:45:01 +0100
committermkanat%kerio.com <>2005-03-12 04:45:01 +0100
commit4910b3f9485a928091d98e5da83b16cebae33eed (patch)
tree86285755c4d1fdcd4b7fef7a4d2e0caacf11bc20
parentaf17bfb29507e2fd93aca4e6f602c527b0e05bd2 (diff)
downloadbugzilla-4910b3f9485a928091d98e5da83b16cebae33eed.tar.gz
bugzilla-4910b3f9485a928091d98e5da83b16cebae33eed.tar.xz
Bug 285692: lastdiffed should use NULL instead of the "beginning of time"
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=glob, a=myk
-rw-r--r--Bugzilla/BugMail.pm15
-rw-r--r--Bugzilla/DB/Schema.pm2
-rwxr-xr-xchecksetup.pl5
-rw-r--r--contrib/sendunsentbugmail.pl6
-rwxr-xr-xeditproducts.cgi4
-rw-r--r--globals.pl15
-rwxr-xr-xsanitycheck.cgi5
7 files changed, 28 insertions, 24 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index 1221dcfbc..ba7c641df 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -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;
diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm
index a879684ea..9a156a1b0 100644
--- a/Bugzilla/DB/Schema.pm
+++ b/Bugzilla/DB/Schema.pm
@@ -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'},
diff --git a/checksetup.pl b/checksetup.pl
index dcf6a30af..f93b3349a 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -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.
#
diff --git a/contrib/sendunsentbugmail.pl b/contrib/sendunsentbugmail.pl
index 35b6a4941..9184e0be2 100644
--- a/contrib/sendunsentbugmail.pl
+++ b/contrib/sendunsentbugmail.pl
@@ -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()) {
diff --git a/editproducts.cgi b/editproducts.cgi
index ea4bc5e5b..de0c874e2 100755
--- a/editproducts.cgi
+++ b/editproducts.cgi
@@ -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) .
diff --git a/globals.pl b/globals.pl
index b0a8feca8..6e0ebd774 100644
--- a/globals.pl
+++ b/globals.pl
@@ -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";
diff --git a/sanitycheck.cgi b/sanitycheck.cgi
index 30a07be5b..2a51a3169 100755
--- a/sanitycheck.cgi
+++ b/sanitycheck.cgi
@@ -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");