From 71f0178b2aabf91b4f6afe3911f615d056fbf4a0 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Mon, 1 Nov 2010 18:51:26 +0100 Subject: [PATCH] gatherstats.pl: Change database update mechanism. DELETE old records and INSERT (INTO) the new ones instead of just REPLACEing them, which will not remove wrong entries (i.e. non-existing newsgroups). Signed-off-by: Thomas Hochstein --- gatherstats.pl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gatherstats.pl b/gatherstats.pl index 14cd883..886faae 100755 --- a/gatherstats.pl +++ b/gatherstats.pl @@ -94,12 +94,19 @@ foreach my $Month (&ListMonth($StartMonth,$EndMonth)) { }; }; + # delete old data for that month + if (!$Options{'o'}) { + $DBQuery = $DBHandle->do(sprintf("DELETE FROM %s.%s WHERE month = ?",$Conf{'DBDatabase'},$Conf{'DBTableGrps'}),undef,$Month) + or warn sprintf("$MySelf: E: Can't delete old groups data for %s from %s.%s: $DBI::errstr\n",$Month,$Conf{'DBDatabase'},$Conf{'DBTableGrps'}); + }; + print "----- GroupStats -----\n" if $Options{'d'}; foreach my $Newsgroup (sort keys %Postings) { print "$Newsgroup => $Postings{$Newsgroup}\n" if $Options{'d'}; if (!$Options{'o'}) { # write to database - $DBQuery = $DBHandle->prepare(sprintf("REPLACE INTO %s.%s (month,newsgroup,postings) VALUES (?, ?, ?)",$Conf{'DBDatabase'},$Conf{'DBTableGrps'})); + $DBQuery = $DBHandle->prepare(sprintf("INSERT INTO %s.%s (month,newsgroup,postings) VALUES (?, ?, ?)",$Conf{'DBDatabase'},$Conf{'DBTableGrps'})); + # $DBQuery = $DBHandle->prepare(sprintf("REPLACE INTO %s.%s (month,newsgroup,postings) VALUES (?, ?, ?)",$Conf{'DBDatabase'},$Conf{'DBTableGrps'})); $DBQuery->execute($Month, $Newsgroup, $Postings{$Newsgroup}) or die sprintf("$MySelf: E: Can't write groups data for %s/%s to %s.%s: $DBI::errstr\n",$Month,$Newsgroup,$Conf{'DBDatabase'},$Conf{'DBTableGrps'}); $DBQuery->finish; }; -- 2.20.1