[tracker] libtracker-data: Use memory temp store for readonly connections



commit ba28fab7bca55497439d8dde05b74b7c586ce544
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Feb 24 15:38:52 2017 +0100

    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.

 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 67c3c21..0d9abcf 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) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]