diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-12-29 15:50:54 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-12-29 15:50:54 +0100 |
commit | 79740a4cbade4fd20fcf1c9d23f5dc730a99db6e (patch) | |
tree | 151d9c564a4487e5e1506f1658fcc545d835cd6b /sql | |
parent | 69dcc0243f4a8a384335b21e184b8bdb0db9c53b (diff) |
Fix log deletion with no removal candidates
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql.go | 7 | ||||
-rw-r--r-- | sql/sql_test.go | 6 |
2 files changed, 10 insertions, 3 deletions
@@ -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) { |