Bug 285692: lastdiffed should use NULL instead of the "beginning of time"
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=glob, a=myk git-svn-id: svn://10.0.0.236/trunk@170574 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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'},
|
||||
|
||||
@@ -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.
|
||||
#
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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) .
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user