[tracker/wip/carlosg/forgotten-single-valued-properties: 2/3] libtracker-data: Only issue FTS updates where we mean to




commit 396cc9eea24318b58ebbdca98ac297698f242532
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue May 25 14:06:46 2021 +0200

    libtracker-data: Only issue FTS updates where we mean to
    
    Right now, getting the old values for a FTS property means those
    values are deleted, and a FTS update is issued afterwards (even if
    with empty strings).
    
    We don't strictly want to do that from all paths, only from those
    that are changing (i.e. not deleting) the FTS property value. Since
    the FTS5 machinery is getting extremely picky, it is better to
    avoid these needless roundtrips.

 src/libtracker-data/tracker-data-update.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 6f9ae0dd7..e7fb39676 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -1647,7 +1647,6 @@ get_old_property_values (TrackerData      *data,
                                old_values = get_property_values (data, property, error);
                        }
 
-                       data->resource_buffer->fts_updated = TRUE;
                } else {
                        old_values = get_property_values (data, property, error);
                }
@@ -1901,6 +1900,9 @@ cache_insert_metadata_decomposed (TrackerData      *data,
        super_properties = tracker_property_get_super_properties (property);
        multiple_values = tracker_property_get_multiple_values (property);
 
+       data->resource_buffer->fts_updated |=
+               tracker_property_get_fulltext_indexed (property);
+
        while (*super_properties) {
                gboolean super_is_multi;
                GArray *super_old_values;
@@ -1912,6 +1914,9 @@ cache_insert_metadata_decomposed (TrackerData      *data,
                        return FALSE;
                }
 
+               data->resource_buffer->fts_updated |=
+                       tracker_property_get_fulltext_indexed (*super_properties);
+
                if (super_is_multi || super_old_values->len == 0) {
                        change |= cache_insert_metadata_decomposed (data, *super_properties, object,
                                                                    &new_error);


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