diff --git a/kernel/model/history.go b/kernel/model/history.go index b0ce07e38..e339434af 100644 --- a/kernel/model/history.go +++ b/kernel/model/history.go @@ -446,7 +446,7 @@ func buildSearchHistoryQueryFilter(query, op, box, table string, typ int) (stmt } ago := time.Now().Add(-24 * time.Hour * time.Duration(Conf.Editor.HistoryRetentionDays)) - stmt += " AND created > '" + fmt.Sprintf("%d", ago.Unix()) + "'" + stmt += " AND CAST(created AS INTEGER) > " + fmt.Sprintf("%d", ago.Unix()) + "" return } @@ -619,7 +619,7 @@ func clearOutdatedHistoryDir(historyDir string) { } // 清理历史库 - sql.DeleteOutdatedHistories(fmt.Sprintf("%d", ago)) + sql.DeleteOutdatedHistories(ago) } var boxLatestHistoryTime = map[string]time.Time{} diff --git a/kernel/sql/history.go b/kernel/sql/history.go index a53b48f99..5a1dd2760 100644 --- a/kernel/sql/history.go +++ b/kernel/sql/history.go @@ -104,8 +104,8 @@ func queryHistory(query string, args ...interface{}) (*sql.Rows, error) { return historyDB.Query(query, args...) } -func deleteOutdatedHistories(tx *sql.Tx, before string, context map[string]interface{}) (err error) { - stmt := "DELETE FROM histories_fts_case_insensitive WHERE created < ?" +func deleteOutdatedHistories(tx *sql.Tx, before int64, context map[string]interface{}) (err error) { + stmt := "DELETE FROM histories_fts_case_insensitive WHERE CAST(created AS INTEGER) < ?" if err = execStmtTx(tx, stmt, before); nil != err { return } diff --git a/kernel/sql/queue_history.go b/kernel/sql/queue_history.go index 418a82160..b9643210a 100644 --- a/kernel/sql/queue_history.go +++ b/kernel/sql/queue_history.go @@ -41,7 +41,7 @@ type historyDBQueueOperation struct { action string // index/deleteOutdated histories []*History // index - before string // deleteOutdated + before int64 // deleteOutdated } func FlushHistoryTxJob() { @@ -121,7 +121,7 @@ func execHistoryOp(op *historyDBQueueOperation, tx *sql.Tx, context map[string]i return } -func DeleteOutdatedHistories(before string) { +func DeleteOutdatedHistories(before int64) { historyDBQueueLock.Lock() defer historyDBQueueLock.Unlock()