aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-01-12 10:57:47 +0100
committerMartin Polden <mpolden@mpolden.no>2020-01-12 10:57:47 +0100
commit7b0df69bb52345c2b9b9361415e817026e2ca5df (patch)
tree0cb3bda117661d35b1b4ecaec192c69d13d106f6
parent42a1ca85d85f3204f69dc57d277d3345b82c13b8 (diff)
Handle calculating stats for empty table
-rw-r--r--sql/sql.go2
-rw-r--r--sql/sql_test.go14
2 files changed, 13 insertions, 3 deletions
diff --git a/sql/sql.go b/sql/sql.go
index 0ac86fa..74857ac 100644
--- a/sql/sql.go
+++ b/sql/sql.go
@@ -245,7 +245,7 @@ func (c *Client) readLogStats() (logStats, error) {
var stats logStats
q1 := `SELECT COUNT(*) as total,
COUNT(CASE hijacked WHEN 1 THEN 1 ELSE NULL END) as hijacked,
- time AS since
+ IFNULL(time, 0) AS since
FROM log
ORDER BY time ASC LIMIT 1`
if err := c.db.Get(&stats, q1); err != nil {
diff --git a/sql/sql_test.go b/sql/sql_test.go
index 5c03c2d..6843d3d 100644
--- a/sql/sql_test.go
+++ b/sql/sql_test.go
@@ -185,12 +185,22 @@ func TestInterleavedRW(t *testing.T) {
func TestReadLogStats(t *testing.T) {
c := testClient()
- writeTests(c, t)
+
got, err := c.readLogStats()
if err != nil {
t.Fatal(err)
}
- want := logStats{
+ want := logStats{}
+ if !reflect.DeepEqual(got, want) {
+ t.Errorf("readLogStats() = (%+v, _), want (%+v, _)", got, want)
+ }
+
+ writeTests(c, t)
+ got, err = c.readLogStats()
+ if err != nil {
+ t.Fatal(err)
+ }
+ want = logStats{
Since: 1560636910,
Hijacked: 1,
Total: 8,