aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-01-19 13:58:55 +0100
committerMartin Polden <mpolden@mpolden.no>2020-01-19 13:58:55 +0100
commit4bf8430aecfe0adb062e6a1042a15374e5c507a4 (patch)
treed9b83f4b021e2b8ea2472929dee3099ec74b1ad3
parent0b94f7424e16965486a106bb44a252feb12f295e (diff)
Respect SQLITE_LIMIT_VARIABLE_NUMBER
-rw-r--r--sql/sql.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/sql.go b/sql/sql.go
index f120b5e..098b97c 100644
--- a/sql/sql.go
+++ b/sql/sql.go
@@ -46,6 +46,8 @@ CREATE TABLE IF NOT EXISTS log (
FOREIGN KEY (rr_type_id) REFERENCES rr_type(id)
);
+CREATE INDEX IF NOT EXISTS log_time ON log(time);
+
CREATE TABLE IF NOT EXISTS log_rr_answer (
id INTEGER PRIMARY KEY,
log_id INTEGER NOT NULL,
@@ -208,7 +210,9 @@ 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 != nil {
+ // SQLite limits the number of variables to 999 (SQLITE_LIMIT_VARIABLE_NUMBER):
+ // https://www.sqlite.org/limits.html
+ if err := tx.Select(&ids, "SELECT id FROM log WHERE time < $1 ORDER BY time ASC LIMIT 999", t.Unix()); err != nil {
return err
}
if len(ids) == 0 {