[tracker/wip/carlosg/graphs: 4/12] libtracker-data: Avoid clearing an already empty FTS row



commit be51f2f1405c6f56b7008cfad375f64b7e22aac3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Apr 23 12:11:54 2020 +0200

    libtracker-data: Avoid clearing an already empty FTS row
    
    It is already known that FTS5 external content tables are extremely
    picky about their index consistenty. It seems another situation to
    avoid is clearing of FTS rows that are already empty, that seems
    enough to have the FTS table deem the index inconsistent.
    
    Found via tracker-miner tests along the DataObject/InformationElement
    split.

 src/libtracker-data/tracker-db-interface-sqlite.c | 7 +++++++
 1 file changed, 7 insertions(+)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 545f26690..b1d60566e 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -2262,8 +2262,15 @@ tracker_db_interface_sqlite_fts_delete_text (TrackerDBInterface  *db_interface,
        TrackerDBStatement *stmt;
        GError *error = NULL;
        gchar *query;
+       gboolean has_text = FALSE;
        gint i;
 
+       for (i = 0; old_text[i] != NULL; i++)
+               has_text |= old_text[i] && *old_text[i];
+
+       if (!has_text)
+               return TRUE;
+
        query = tracker_db_interface_sqlite_fts_create_query (db_interface,
                                                              database,
                                                              TRUE, properties);


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