diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-01-19 13:58:55 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-01-19 13:58:55 +0100 |
commit | 4bf8430aecfe0adb062e6a1042a15374e5c507a4 (patch) | |
tree | d9b83f4b021e2b8ea2472929dee3099ec74b1ad3 | |
parent | 0b94f7424e16965486a106bb44a252feb12f295e (diff) |
Respect SQLITE_LIMIT_VARIABLE_NUMBER
-rw-r--r-- | sql/sql.go | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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 { |