aboutsummaryrefslogtreecommitdiffstats
path: root/sql
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-12-29 15:50:54 +0100
committerMartin Polden <mpolden@mpolden.no>2019-12-29 15:50:54 +0100
commit79740a4cbade4fd20fcf1c9d23f5dc730a99db6e (patch)
tree151d9c564a4487e5e1506f1658fcc545d835cd6b /sql
parent69dcc0243f4a8a384335b21e184b8bdb0db9c53b (diff)
Fix log deletion with no removal candidates
Diffstat (limited to 'sql')
-rw-r--r--sql/sql.go7
-rw-r--r--sql/sql_test.go6
2 files changed, 10 insertions, 3 deletions
diff --git a/sql/sql.go b/sql/sql.go
index f33390d..eeafd90 100644
--- a/sql/sql.go
+++ b/sql/sql.go
@@ -186,11 +186,12 @@ func (c *Client) DeleteLogBefore(t time.Time) (err error) {
}
defer tx.Rollback()
var ids []int64
- if err := tx.Select(&ids, "SELECT id FROM log WHERE time < $1", t.Unix()); err == sql.ErrNoRows {
- return nil
- } else if err != nil {
+ if err := tx.Select(&ids, "SELECT id FROM log WHERE time < $1", t.Unix()); err != nil {
return err
}
+ if len(ids) == 0 {
+ return nil
+ }
deleteByIds := []string{
"DELETE FROM log_rr_answer WHERE log_id IN (?)",
"DELETE FROM log WHERE id IN (?)",
diff --git a/sql/sql_test.go b/sql/sql_test.go
index 8c867ad..efa9ba7 100644
--- a/sql/sql_test.go
+++ b/sql/sql_test.go
@@ -152,6 +152,12 @@ func TestDeleteLogBefore(t *testing.T) {
if want, got := 0, count(t, c, "SELECT COUNT(*) FROM rr_answer WHERE name = $1", answer); got != want {
t.Errorf("got %d rows for answer %q, want %d", got, question, want)
}
+
+ // Delete logs in the far past which matches 0 entries.
+ oneYear := time.Hour * 8760
+ if err := c.DeleteLogBefore(u.Add(-oneYear)); err != nil {
+ t.Fatal(err)
+ }
}
func TestInterleavedRW(t *testing.T) {