From f8aeecaf8cd33d87315c5a50be9a762e142062a4 Mon Sep 17 00:00:00 2001 From: "travis%sedsystems.ca" <> Date: Wed, 9 Feb 2005 00:51:02 +0000 Subject: Bug 257315 : type of delta_ts in bugs table should not be timestamp Patch by Tomas Kopal r=mkanat, LpSolit a=justdave --- Bugzilla/BugMail.pm | 3 +-- CGI.pl | 26 ++++++++++++++------------ attachment.cgi | 2 +- checksetup.pl | 9 ++++++++- contrib/bug_email.pl | 6 +++--- contrib/jb2bz.py | 2 ++ editmilestones.cgi | 3 +-- editproducts.cgi | 16 ++++++++-------- editversions.cgi | 3 +-- globals.pl | 5 ++--- importxml.pl | 10 +++++++++- move.pl | 6 ++++-- post_bug.cgi | 20 +++++++++++--------- process_bug.cgi | 19 ++++++++++++------- sanitycheck.cgi | 7 +++---- votes.cgi | 3 +-- 16 files changed, 81 insertions(+), 59 deletions(-) diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 77156b0e7..ab511176c 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -423,8 +423,7 @@ sub ProcessOneBug($) { } - SendSQL("UPDATE bugs SET lastdiffed = '$end', delta_ts = delta_ts " . - "WHERE bug_id = $id"); + SendSQL("UPDATE bugs SET lastdiffed = '$end' WHERE bug_id = $id"); # Filter the exclude list for dupes one last time @excludedAddresses = filterExcludeList(\@excludedAddresses, diff --git a/CGI.pl b/CGI.pl index 58075bacb..1a8f09c2f 100644 --- a/CGI.pl +++ b/CGI.pl @@ -246,32 +246,34 @@ sub CheckIfVotedConfirmed { my ($id, $who) = (@_); PushGlobalSQLState(); SendSQL("SELECT bugs.votes, bugs.bug_status, products.votestoconfirm, " . - " bugs.everconfirmed " . + " bugs.everconfirmed, NOW() " . "FROM bugs, products " . "WHERE bugs.bug_id = $id AND products.id = bugs.product_id"); - my ($votes, $status, $votestoconfirm, $everconfirmed) = (FetchSQLData()); + my ($votes, $status, $votestoconfirm, $everconfirmed, $timestamp) = (FetchSQLData()); + my $sql_timestamp = SqlQuote($timestamp); my $ret = 0; if ($votes >= $votestoconfirm && $status eq 'UNCONFIRMED') { - SendSQL("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1 " . - "WHERE bug_id = $id"); + SendSQL("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1, " . + "delta_ts = $sql_timestamp WHERE bug_id = $id"); my $fieldid = GetFieldID("bug_status"); SendSQL("INSERT INTO bugs_activity " . - "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . - "($id,$who,now(),$fieldid,'UNCONFIRMED','NEW')"); + "(bug_id, who, bug_when, fieldid, removed, added) VALUES " . + "($id, $who, $sql_timestamp, $fieldid, 'UNCONFIRMED', 'NEW')"); if (!$everconfirmed) { $fieldid = GetFieldID("everconfirmed"); SendSQL("INSERT INTO bugs_activity " . - "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . - "($id,$who,now(),$fieldid,'0','1')"); + "(bug_id, who, bug_when, fieldid, removed, added) VALUES " . + "($id, $who, $sql_timestamp, $fieldid, '0', '1')"); } - + AppendComment($id, DBID_to_name($who), - "*** This bug has been confirmed by popular vote. ***", 0); - + "*** This bug has been confirmed by popular vote. ***", + 0, $timestamp); + $vars->{'type'} = "votes"; $vars->{'id'} = $id; $vars->{'mailrecipients'} = { 'changer' => $who }; - + $template->process("bug/process/results.html.tmpl", $vars) || ThrowTemplateError($template->error()); $ret = 1; diff --git a/attachment.cgi b/attachment.cgi index 202c8818f..a5407e8b0 100755 --- a/attachment.cgi +++ b/attachment.cgi @@ -940,7 +940,7 @@ sub insert @newvalues = map(SqlQuote($_), @newvalues); # Update the bug record. Note that this doesn't involve login_name. - SendSQL("UPDATE bugs SET " . + SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp, " . join(", ", map("$fields[$_] = $newvalues[$_]", (0..2))) . " WHERE bug_id = $::FORM{'bugid'}"); diff --git a/checksetup.pl b/checksetup.pl index daabfa8f4..409568b83 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -1767,7 +1767,7 @@ $table{bugs} = bug_severity enum($my_severities) not null, bug_status enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED", "VERIFIED", "CLOSED") not null, creation_ts datetime not null, - delta_ts timestamp not null, + delta_ts datetime not null, short_desc mediumtext not null, op_sys enum($my_opsys) not null, priority enum($my_priorities) not null, @@ -4703,6 +4703,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 = GetFieldDef("bugs", "delta_ts")) && + $fielddef->[1] =~ /^timestamp/) { + ChangeFieldType ('bugs', 'delta_ts', 'DATETIME NOT NULL'); +} + # # Final checks... diff --git a/contrib/bug_email.pl b/contrib/bug_email.pl index 6589401e8..1f2f28421 100755 --- a/contrib/bug_email.pl +++ b/contrib/bug_email.pl @@ -38,7 +38,7 @@ # # You need to work with bug_email.pl the MIME::Parser installed. # -# $Id: bug_email.pl,v 1.22 2005/01/30 04:22:28 justdave%bugzilla.org Exp $ +# $Id: bug_email.pl,v 1.23 2005/02/08 16:51:03 travis%sedsystems.ca Exp $ ############################################################### # 02/12/2000 (SML) @@ -1085,7 +1085,7 @@ END my $reporter = ""; my $query = "insert into bugs (\n" . join(",\n", @used_fields ) . - ", bug_status, creation_ts, everconfirmed) values ( "; + ", bug_status, creation_ts, delta_ts, everconfirmed) values ( "; # 'Yuck'. Then again, this whole file should be rewritten anyway... $query =~ s/product/product_id/; @@ -1140,7 +1140,7 @@ END $state = SqlQuote("NEW"); } - $query .= $state . ", \'$bug_when\', $ever_confirmed)\n"; + $query .= $state . ", \'$bug_when\', \'$bug_when\', $ever_confirmed)\n"; # $query .= SqlQuote( "NEW" ) . ", now(), " . SqlQuote($comment) . " )\n"; SendSQL("SELECT userid FROM profiles WHERE login_name=\'$reporter\'"); diff --git a/contrib/jb2bz.py b/contrib/jb2bz.py index dbd47ea7a..ed8231dfc 100644 --- a/contrib/jb2bz.py +++ b/contrib/jb2bz.py @@ -208,6 +208,7 @@ def process_jitterbug(filename): "bug_severity='normal'," \ "bug_status=%s," \ "creation_ts=%s," \ + "delta_ts=%s," \ "short_desc=%s," \ "product=%s," \ "rep_platform='All'," \ @@ -219,6 +220,7 @@ def process_jitterbug(filename): [ current['number'], bug_status, time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]), + time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]), current['short-description'], product, reporter, diff --git a/editmilestones.cgi b/editmilestones.cgi index 160385104..6d47fc6af 100755 --- a/editmilestones.cgi +++ b/editmilestones.cgi @@ -548,8 +548,7 @@ if ($action eq 'update') { trick_taint($milestoneold); $dbh->do('UPDATE bugs - SET target_milestone = ?, - delta_ts = delta_ts + SET target_milestone = ? WHERE target_milestone = ? AND product_id = ?', undef, diff --git a/editproducts.cgi b/editproducts.cgi index d619909ae..3faa88563 100755 --- a/editproducts.cgi +++ b/editproducts.cgi @@ -1175,12 +1175,12 @@ if ($action eq 'updategroupcontrols') { my ($removed, $timestamp) = FetchSQLData(); LogActivityEntry($bugid, "bug_group", $removed, "", $::userid, $timestamp); + my $diffed = ""; if ($mailiscurrent != 0) { - SendSQL("UPDATE bugs SET lastdiffed = " . SqlQuote($timestamp) - . " WHERE bug_id = $bugid"); + $diffed = ", lastdiffed = " . SqlQuote($timestamp); } - SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) - . " WHERE bug_id = $bugid"); + SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) . + $diffed . " WHERE bug_id = $bugid"); PopGlobalSQLState(); $count++; } @@ -1209,12 +1209,12 @@ if ($action eq 'updategroupcontrols') { my ($added, $timestamp) = FetchSQLData(); LogActivityEntry($bugid, "bug_group", "", $added, $::userid, $timestamp); + my $diffed = ""; if ($mailiscurrent != 0) { - SendSQL("UPDATE bugs SET lastdiffed = " . SqlQuote($timestamp) - . " WHERE bug_id = $bugid"); + $diffed = ", lastdiffed = " . SqlQuote($timestamp); } - SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) - . " WHERE bug_id = $bugid"); + SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) . + $diffed . " WHERE bug_id = $bugid"); PopGlobalSQLState(); $count++; } diff --git a/editversions.cgi b/editversions.cgi index e4cf47e2a..2173470dc 100755 --- a/editversions.cgi +++ b/editversions.cgi @@ -418,8 +418,7 @@ if ($action eq 'update') { exit; } SendSQL("UPDATE bugs - SET version=" . SqlQuote($version) . ", - delta_ts = delta_ts + SET version=" . SqlQuote($version) . " WHERE version=" . SqlQuote($versionold) . " AND product_id = $product_id"); SendSQL("UPDATE versions diff --git a/globals.pl b/globals.pl index 7a0ccebaa..f4a11e72f 100644 --- a/globals.pl +++ b/globals.pl @@ -137,7 +137,7 @@ sub AppendComment { "VALUES($bugid, $whoid, $timestamp, " . SqlQuote($comment) . ", " . $privacyval . ", " . SqlQuote($work_time) . ")"); - SendSQL("UPDATE bugs SET delta_ts = now() WHERE bug_id = $bugid"); + SendSQL("UPDATE bugs SET delta_ts = $timestamp WHERE bug_id = $bugid"); } sub GetFieldID { @@ -1269,8 +1269,7 @@ sub RemoveVotes { SendSQL("SELECT SUM(vote_count) FROM votes WHERE bug_id = $id"); my $v = FetchOneColumn(); $v ||= 0; - SendSQL("UPDATE bugs SET votes = $v, delta_ts = delta_ts " . - "WHERE bug_id = $id"); + SendSQL("UPDATE bugs SET votes = $v WHERE bug_id = $id"); } } diff --git a/importxml.pl b/importxml.pl index 277681a35..21d962d41 100755 --- a/importxml.pl +++ b/importxml.pl @@ -339,13 +339,21 @@ for (my $k=1 ; $k <= $bugqty ; $k++) { my @query = (); my @values = (); - foreach my $field ( qw(creation_ts delta_ts status_whiteboard) ) { + foreach my $field ( qw(creation_ts status_whiteboard) ) { if ( (defined $bug_fields{$field}) && ($bug_fields{$field}) ){ push (@query, "$field"); push (@values, SqlQuote($bug_fields{$field})); } } + push (@query, "delta_ts"); + if ( (defined $bug_fields{'delta_ts'}) && ($bug_fields{'delta_ts'}) ){ + push (@values, SqlQuote($bug_fields{'delta_ts'})); + } + else { + push (@values, "NOW()"); + } + if ( (defined $bug_fields{'bug_file_loc'}) && ($bug_fields{'bug_file_loc'}) ){ push (@query, "bug_file_loc"); push (@values, SqlQuote($bug_fields{'bug_file_loc'})); diff --git a/move.pl b/move.pl index 328671f81..7747baaed 100755 --- a/move.pl +++ b/move.pl @@ -122,8 +122,10 @@ foreach my $id (split(/:/, scalar($cgi->param('buglist')))) { "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . "($id,$exporterid,now(),$fieldid,'$cur_res','MOVED')"); - SendSQL("UPDATE bugs SET bug_status =\"RESOLVED\" where bug_id=\"$id\""); - SendSQL("UPDATE bugs SET resolution =\"MOVED\" where bug_id=\"$id\""); + SendSQL("UPDATE bugs SET bug_status =\"RESOLVED\", + resolution =\"MOVED\", + delta_ts = NOW() + WHERE bug_id=\"$id\""); my $comment = ""; if (defined $cgi->param('comment') && $cgi->param('comment') !~ /^\s*$/) { diff --git a/post_bug.cgi b/post_bug.cgi index 97f788dc6..0f5abddb2 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -321,9 +321,14 @@ if (UserInGroup("editbugs") && defined($::FORM{'dependson'})) { } } +# get current time +SendSQL("SELECT NOW()"); +my $timestamp = FetchOneColumn(); +my $sql_timestamp = SqlQuote($timestamp); + # Build up SQL string to add bug. my $sql = "INSERT INTO bugs " . - "(" . join(",", @used_fields) . ", reporter, creation_ts, " . + "(" . join(",", @used_fields) . ", reporter, creation_ts, delta_ts, " . "estimated_time, remaining_time, deadline) " . "VALUES ("; @@ -337,7 +342,7 @@ $comment = trim($comment); # OK except for the fact that it causes e-mail to be suppressed. $comment = $comment ? $comment : " "; -$sql .= "$::userid, now(), "; +$sql .= "$::userid, $sql_timestamp, $sql_timestamp, "; # Time Tracking if (UserInGroup(Param("timetrackinggroup")) && @@ -414,9 +419,6 @@ while (MoreSQLData()) { # Add the bug report to the DB. SendSQL($sql); -SendSQL("select now()"); -my $timestamp = FetchOneColumn(); - # Get the bug ID back. SendSQL("select LAST_INSERT_ID()"); my $id = FetchOneColumn(); @@ -434,8 +436,8 @@ if (Param("insidergroup") && UserInGroup(Param("insidergroup"))) { } SendSQL("INSERT INTO longdescs (bug_id, who, bug_when, thetext, isprivate) - VALUES ($id, " . SqlQuote($user->id) . ", " . SqlQuote($timestamp) . - ", " . SqlQuote($comment) . ", $privacy)"); + VALUES ($id, " . SqlQuote($user->id) . ", $sql_timestamp, " . + SqlQuote($comment) . ", $privacy)"); # Insert the cclist into the database foreach my $ccid (keys(%ccids)) { @@ -456,8 +458,8 @@ if (UserInGroup("editbugs")) { while (MoreSQLData()) { push (@list, FetchOneColumn()); } - SendSQL("UPDATE bugs SET keywords = " . - SqlQuote(join(', ', @list)) . + SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp," . + " keywords = " . SqlQuote(join(', ', @list)) . " WHERE bug_id = $id"); } if (defined $::FORM{'dependson'}) { diff --git a/process_bug.cgi b/process_bug.cgi index a04fe62b2..e43bf42ee 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -1111,14 +1111,15 @@ sub FindWrapPoint { } sub LogDependencyActivity { - my ($i, $oldstr, $target, $me) = (@_); + my ($i, $oldstr, $target, $me, $timestamp) = (@_); + my $sql_timestamp = SqlQuote($timestamp); my $newstr = SnapShotDeps($i, $target, $me); if ($oldstr ne $newstr) { # Figure out what's really different... my ($removed, $added) = diff_strings($oldstr, $newstr); LogActivityEntry($i,$target,$removed,$added,$whoid,$timestamp); # update timestamp on target bug so midairs will be triggered - SendSQL("UPDATE bugs SET delta_ts=NOW() WHERE bug_id=$i"); + SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp WHERE bug_id = $i"); $bug_changed = 1; return 1; } @@ -1350,6 +1351,7 @@ foreach my $id (@idlist) { SendSQL("select now()"); $timestamp = FetchOneColumn(); + my $sql_timestamp = SqlQuote($timestamp); my $work_time; if (UserInGroup(Param('timetrackinggroup'))) { @@ -1402,7 +1404,7 @@ foreach my $id (@idlist) { while (MoreSQLData()) { push(@list, FetchOneColumn()); } - SendSQL("UPDATE bugs SET keywords = " . + SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp, keywords = " . SqlQuote(join(', ', @list)) . " WHERE bug_id = $id"); } @@ -1557,9 +1559,9 @@ foreach my $id (@idlist) { SendSQL("insert into dependencies ($me, $target) values ($id, $i)"); } foreach my $k (@keys) { - LogDependencyActivity($k, $snapshot{$k}, $me, $target); + LogDependencyActivity($k, $snapshot{$k}, $me, $target, $timestamp); } - LogDependencyActivity($id, $oldsnap, $target, $me); + LogDependencyActivity($id, $oldsnap, $target, $me, $timestamp); $check_dep_bugs = 1; } @@ -1770,7 +1772,7 @@ foreach my $id (@idlist) { Bugzilla::Flag::process($target, $timestamp, \%::FORM); } if ($bug_changed) { - SendSQL("UPDATE bugs SET delta_ts = " . SqlQuote($timestamp) . " WHERE bug_id = $id"); + SendSQL("UPDATE bugs SET delta_ts = $sql_timestamp WHERE bug_id = $id"); } SendSQL("UNLOCK TABLES"); @@ -1803,7 +1805,10 @@ foreach my $id (@idlist) { SendSQL("INSERT INTO cc (who, bug_id) VALUES ($reporter, " . SqlQuote($duplicate) . ")"); } # Bug 171639 - Duplicate notifications do not need to be private. - AppendComment($duplicate, Bugzilla->user->login, "*** Bug $::FORM{'id'} has been marked as a duplicate of this bug. ***", 0); + AppendComment($duplicate, Bugzilla->user->login, + "*** Bug $::FORM{'id'} has been marked as a duplicate of this bug. ***", + 0, $timestamp); + CheckFormFieldDefined(\%::FORM,'comment'); SendSQL("INSERT INTO duplicates VALUES ($duplicate, $::FORM{'id'})"); diff --git a/sanitycheck.cgi b/sanitycheck.cgi index d9c6af221..7bd42d22d 100755 --- a/sanitycheck.cgi +++ b/sanitycheck.cgi @@ -96,7 +96,7 @@ PutHeader("Bugzilla Sanity Check"); if (defined $cgi->param('rebuildvotecache')) { Status("OK, now rebuilding vote cache."); SendSQL("LOCK TABLES bugs WRITE, votes READ"); - SendSQL("UPDATE bugs SET votes = 0, delta_ts = delta_ts"); + SendSQL("UPDATE bugs SET votes = 0"); SendSQL("SELECT bug_id, SUM(vote_count) FROM votes GROUP BY bug_id"); my %votes; while (@row = FetchSQLData()) { @@ -104,7 +104,7 @@ if (defined $cgi->param('rebuildvotecache')) { $votes{$id} = $v; } foreach my $id (keys %votes) { - SendSQL("UPDATE bugs SET votes = $votes{$id}, delta_ts = delta_ts WHERE bug_id = $id"); + SendSQL("UPDATE bugs SET votes = $votes{$id} WHERE bug_id = $id"); } SendSQL("UNLOCK TABLES"); Status("Vote cache has been rebuilt."); @@ -586,8 +586,7 @@ if (@badbugs) { if (exists($realk{$b})) { $k = $realk{$b}; } - SendSQL("UPDATE bugs SET delta_ts = delta_ts, keywords = " . - SqlQuote($k) . + SendSQL("UPDATE bugs SET keywords = " . SqlQuote($k) . " WHERE bug_id = $b"); } Status("Keyword cache fixed."); diff --git a/votes.cgi b/votes.cgi index 3c61f6061..7e2caf2a8 100755 --- a/votes.cgi +++ b/votes.cgi @@ -344,8 +344,7 @@ sub record_votes { foreach my $id (keys %affected) { SendSQL("SELECT sum(vote_count) FROM votes WHERE bug_id = $id"); my $v = FetchOneColumn() || 0; - SendSQL("UPDATE bugs SET votes = $v, delta_ts=delta_ts - WHERE bug_id = $id"); + SendSQL("UPDATE bugs SET votes = $v WHERE bug_id = $id"); my $confirmed = CheckIfVotedConfirmed($id, $who); $vars->{'header_done'} = 1 if $confirmed; } -- cgit v1.2.3-24-g4f1b