aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstat
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-06-20 22:31:31 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-06-20 22:31:31 +0100
commita87e53fc9647f4a67f087a77b90da46d52421589 (patch)
treeff9f806acfebe816e2b3ee86ab77c29fd598c079 /src/libstat
parent96d2adcc5b55c6d1d0463bd051495fbf69f9fcc4 (diff)
downloadrspamd-a87e53fc9647f4a67f087a77b90da46d52421589.tar.gz
rspamd-a87e53fc9647f4a67f087a77b90da46d52421589.zip
Use WAL in sqlite3.
Diffstat (limited to 'src/libstat')
-rw-r--r--src/libstat/backends/sqlite3_backend.c7
1 files changed, 6 insertions, 1 deletions
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));