diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-05 18:58:13 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-05 18:58:13 +0100 |
commit | 763ab77075df986497e7b6937d33d5f487ba7fc6 (patch) | |
tree | c00911e4f77c7910e0e7f36432c5c97fabb35dc9 | |
parent | 18a45837c555962fc16e21da6755707e48518893 (diff) | |
download | rspamd-763ab77075df986497e7b6937d33d5f487ba7fc6.tar.gz rspamd-763ab77075df986497e7b6937d33d5f487ba7fc6.zip |
Enable mmap in sqlite3.
-rw-r--r-- | src/libserver/fuzzy_backend.c | 10 | ||||
-rw-r--r-- | src/libutil/sqlite_utils.c | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index 3d4bb6c23..af6eb193d 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -415,7 +415,8 @@ rspamd_fuzzy_backend_open (const gchar *path, GError **err) static const char sqlite_wal[] = "PRAGMA journal_mode=\"wal\";", fallback_journal[] = "PRAGMA journal_mode=\"off\";", foreign_keys[] = "PRAGMA foreign_keys=\"ON\";", - secure_delete[] = "PRAGMA secure_delete=\"OFF\";"; + secure_delete[] = "PRAGMA secure_delete=\"OFF\";", + enable_mmap[] = "PRAGMA mmap_size=268435456;"; gint rc; if (path == NULL) { @@ -485,6 +486,13 @@ rspamd_fuzzy_backend_open (const gchar *path, GError **err) sqlite3_errmsg (backend->db)); } + if (sizeof (gpointer) >= 8 && + (rc = sqlite3_exec (backend->db, enable_mmap, NULL, NULL, NULL)) != + SQLITE_OK) { + msg_warn_fuzzy_backend ("cannot enable mmap: %s", + sqlite3_errmsg (backend->db)); + } + rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_VACUUM, backend, NULL); if (rspamd_fuzzy_backend_run_stmt (backend, RSPAMD_FUZZY_BACKEND_COUNT) diff --git a/src/libutil/sqlite_utils.c b/src/libutil/sqlite_utils.c index d677a0dc2..980d07abc 100644 --- a/src/libutil/sqlite_utils.c +++ b/src/libutil/sqlite_utils.c @@ -250,7 +250,8 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const static const char sqlite_wal[] = "PRAGMA journal_mode=\"wal\";", exclusive_lock_sql[] = "PRAGMA locking_mode=\"exclusive\";", fsync_sql[] = "PRAGMA synchronous=1;", - foreign_keys[] = "PRAGMA foreign_keys=\"ON\";"; + foreign_keys[] = "PRAGMA foreign_keys=\"ON\";", + enable_mmap[] = "PRAGMA mmap_size=268435456;"; gboolean create = FALSE, has_lock = FALSE; flags = SQLITE_OPEN_READWRITE; @@ -384,6 +385,13 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const sqlite3_errmsg (sqlite)); } + if (sizeof (gpointer) >= 8 && + (rc = sqlite3_exec (sqlite, enable_mmap, NULL, NULL, NULL)) != + SQLITE_OK) { + msg_warn_pool ("cannot enable mmap: %s", + sqlite3_errmsg (sqlite)); + } + if (has_lock) { msg_debug_pool ("removing lock from %s", lock_path); rspamd_file_unlock (lock_fd, FALSE); |