diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-02-24 15:38:52 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-02-24 17:20:52 +0100 |
commit | ba28fab7bca55497439d8dde05b74b7c586ce544 (patch) | |
tree | 4e967ebf5a9fb4619ec277daace4e9190e078d71 | |
parent | 501862474329b688ea0cbd2111a43ac8deec901c (diff) | |
download | tracker-ba28fab7bca55497439d8dde05b74b7c586ce544.tar.gz |
libtracker-data: Use memory temp store for readonly connections
It seems a bit harsh that fts queries on readonly interfaces fail
if / is full because a tmp file for the fts view couldn't be created.
Let readonly clients fully operate on memory for these cases.
-rw-r--r-- | src/libtracker-data/tracker-db-manager.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c index 67c3c214a..0d9abcf27 100644 --- a/src/libtracker-data/tracker-db-manager.c +++ b/src/libtracker-data/tracker-db-manager.c @@ -209,6 +209,7 @@ static void db_set_params (TrackerDBInterface *iface, gint cache_size, gint page_size, + gboolean readonly, GError **error) { gchar *queries = NULL; @@ -234,10 +235,15 @@ db_set_params (TrackerDBInterface *iface, #else tracker_db_interface_execute_query (iface, NULL, "PRAGMA synchronous = OFF;"); #endif /* DISABLE_JOURNAL */ - tracker_db_interface_execute_query (iface, NULL, "PRAGMA temp_store = FILE;"); tracker_db_interface_execute_query (iface, NULL, "PRAGMA encoding = \"UTF-8\""); tracker_db_interface_execute_query (iface, NULL, "PRAGMA auto_vacuum = 0;"); + if (readonly) { + tracker_db_interface_execute_query (iface, NULL, "PRAGMA temp_store = MEMORY;"); + } else { + tracker_db_interface_execute_query (iface, NULL, "PRAGMA temp_store = FILE;"); + } + stmt = tracker_db_interface_create_statement (iface, TRACKER_DB_STATEMENT_CACHE_TYPE_NONE, &internal_error, "PRAGMA journal_mode = WAL;"); @@ -332,6 +338,7 @@ db_interface_get (TrackerDB type, db_set_params (iface, dbs[type].cache_size, dbs[type].page_size, + TRUE, &internal_error); if (internal_error) { @@ -1416,6 +1423,7 @@ tracker_db_manager_get_db_interfaces (GError **error, db_set_params (connection, dbs[db].cache_size, dbs[db].page_size, + readonly, &internal_error); if (internal_error) { |