diff options
author | gerv%gerv.net <> | 2004-01-22 17:10:53 +0100 |
---|---|---|
committer | gerv%gerv.net <> | 2004-01-22 17:10:53 +0100 |
commit | 89de356424ce5717e6b5e0dbbd65609b84df40a0 (patch) | |
tree | deaeaa09627903af7a00b4912235e7cda593a7d0 | |
parent | 8eb6d92c00d0aa823cbe3250ad900d9b1aea5355 (diff) | |
download | bugzilla-89de356424ce5717e6b5e0dbbd65609b84df40a0.tar.gz bugzilla-89de356424ce5717e6b5e0dbbd65609b84df40a0.tar.xz |
Bug 227155 - make sure running collectstats.pl twice in a day, or migrating data from old charts to new charts where there are duplicate entries, doesn't cause an SQL error. Patch by gerv; r,a=justdave.
-rwxr-xr-x | checksetup.pl | 8 | ||||
-rwxr-xr-x | collectstats.pl | 7 |
2 files changed, 15 insertions, 0 deletions
diff --git a/checksetup.pl b/checksetup.pl index 1d6240867..255fc56e0 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -3707,6 +3707,9 @@ if (!$series_exists) { "(series_id, date, value) " . "VALUES (?, ?, ?)"); + my $deletesth = $dbh->prepare("DELETE FROM series_data + WHERE series_id = ? AND date = ?"); + # Fields in the data file (matches the current collectstats.pl) my @statuses = qw(NEW ASSIGNED REOPENED UNCONFIRMED RESOLVED VERIFIED CLOSED); @@ -3786,6 +3789,11 @@ if (!$series_exists) { # Insert values into series_data: series_id, date, value my %fielddata = %{$data{$field}}; foreach my $date (keys %fielddata) { + # We need to delete in case the text file had duplicate entries + # in it. + $deletesth->execute($seriesids{$field}, + $dbh->quote($date)); + # We prepared this above $seriesdatasth->execute($seriesids{$field}, $dbh->quote($date), diff --git a/collectstats.pl b/collectstats.pl index 002d5fba2..bc7b24884 100755 --- a/collectstats.pl +++ b/collectstats.pl @@ -453,6 +453,12 @@ sub CollectSeriesData { "(series_id, date, value) " . "VALUES (?, " . $dbh->quote($today) . ", ?)"); + # We delete from the table beforehand, to avoid SQL errors if people run + # collectstats.pl twice on the same day. + my $deletesth = $dbh->prepare("DELETE FROM series_data + WHERE series_id = ? AND date = " . + $dbh->quote($today)); + foreach my $series_id (keys %$serieses) { # We set up the user for Search.pm's permission checking - each series # runs with the permissions of its creator. @@ -470,6 +476,7 @@ sub CollectSeriesData { my $count = scalar(@$data) || 0; + $deletesth->execute($series_id); $sth->execute($series_id, $count); } } |