[tracker/wip/carlosg/fixes-for-dataobject-split: 4/8] libtracker-data: Avoid clearing an already empty FTS row



commit 8229255e794653b4179baa7a63d6b4404e545db6
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 fb5bcb46d..789cdd50f 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -2261,8 +2261,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]