From a87e53fc9647f4a67f087a77b90da46d52421589 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 20 Jun 2015 22:31:31 +0100 Subject: Use WAL in sqlite3. --- src/libstat/backends/sqlite3_backend.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/libstat') diff --git a/src/libstat/backends/sqlite3_backend.c b/src/libstat/backends/sqlite3_backend.c index 112393f98..d784cea20 100644 --- a/src/libstat/backends/sqlite3_backend.c +++ b/src/libstat/backends/sqlite3_backend.c @@ -91,7 +91,7 @@ static struct rspamd_sqlite3_prstmt { { { .idx = RSPAMD_STAT_BACKEND_TRANSACTION_START, - .sql = "BEGIN TRANSACTION;", + .sql = "BEGIN IMMEDIATE TRANSACTION;", .args = "", .stmt = NULL, .result = SQLITE_DONE, @@ -288,6 +288,7 @@ rspamd_sqlite3_opendb (const gchar *path, const ucl_object_t *opts, struct rspamd_stat_sqlite3_db *bk; sqlite3 *sqlite; gint rc, flags; + static const char sqlite_wal[] = "PRAGMA journal_mode=WAL;"; flags = SQLITE_OPEN_READWRITE; @@ -315,6 +316,10 @@ rspamd_sqlite3_opendb (const gchar *path, const ucl_object_t *opts, } } + if (sqlite3_exec (sqlite, sqlite_wal, NULL, NULL, NULL) != SQLITE_OK) { + msg_warn ("WAL mode is not supported, locking issues might occur"); + } + bk = g_slice_alloc0 (sizeof (*bk)); bk->sqlite = sqlite; bk->prstmt = g_slice_alloc0 (sizeof (prepared_stmts)); -- cgit v1.2.3