[tracker/wip/carlosg/backports-3.3: 7/7] libtracker-data: Fetch nrl:modified from all graphs




commit 02d6f5bf039e5f5c62e9cddb0daf42226ca39f53
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Jul 5 11:30:16 2022 +0200

    libtracker-data: Fetch nrl:modified from all graphs
    
    We are just looking at the default graph when initializing nrl:modified
    after opening an existing database. Since the default graph possibly
    only contains part of the data, are possibly/likely missing the latest
    sequence number if used on other graphs.
    
    Check all graphs here relying on our virtual tracker_triples table, so
    we are ensured to get the actual latest/greatest nrl:modified sequence
    that was previously used from the union of all graphs. This ensures us
    to get always a fresh sequence number for newly inserted data.

 src/libtracker-data/tracker-data-update.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index bee4fcc50..6aa65c911 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -406,6 +406,8 @@ tracker_data_update_initialize_modseq (TrackerData  *data,
        TrackerDBCursor    *cursor = NULL;
        TrackerDBInterface *temp_iface;
        TrackerDBStatement *stmt;
+       TrackerOntologies  *ontologies;
+       TrackerProperty    *property;
        GError             *inner_error = NULL;
        gint                max_modseq = 0;
 
@@ -414,9 +416,13 @@ tracker_data_update_initialize_modseq (TrackerData  *data,
                return TRUE;
 
        temp_iface = tracker_data_manager_get_writable_db_interface (data->manager);
+       ontologies = tracker_data_manager_get_ontologies (data->manager);
+       property = tracker_ontologies_get_property_by_uri (ontologies, TRACKER_PREFIX_NRL "modified");
 
-       stmt = tracker_db_interface_create_statement (temp_iface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, 
&inner_error,
-                                                     "SELECT MAX(\"nrl:modified\") AS A FROM 
\"rdfs:Resource\"");
+       stmt = tracker_db_interface_create_vstatement (temp_iface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, 
&inner_error,
+                                                      "SELECT MAX(object) FROM tracker_triples "
+                                                      "WHERE predicate = %" G_GINT64_FORMAT,
+                                                      tracker_property_get_id (property));
 
        if (stmt) {
                cursor = tracker_db_statement_start_cursor (stmt, &inner_error);


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