summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-02-24 15:38:52 +0100
committerCarlos Garnacho <carlosg@gnome.org>2017-02-24 17:20:52 +0100
commitba28fab7bca55497439d8dde05b74b7c586ce544 (patch)
tree4e967ebf5a9fb4619ec277daace4e9190e078d71
parent501862474329b688ea0cbd2111a43ac8deec901c (diff)
downloadtracker-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.c10
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) {