[tracker/tracker-1.12] libtracker-fts: Adapt to incompatible change in sqlite 3.20



commit a1d6f2e93ce84aee886fdef22cfd1cb559a3c02e
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Aug 6 18:38:00 2017 +0200

    libtracker-fts: Adapt to incompatible change in sqlite 3.20
    
    From that version on, we must use the brand new sqlite3_bind_pointer()
    interface to access the fts5 interface pointer. Adapt to it without
    giving up older versions.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=785883

 src/libtracker-fts/tracker-fts-tokenizer.c |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-fts/tracker-fts-tokenizer.c b/src/libtracker-fts/tracker-fts-tokenizer.c
index f8a0728..09d5f85 100644
--- a/src/libtracker-fts/tracker-fts-tokenizer.c
+++ b/src/libtracker-fts/tracker-fts-tokenizer.c
@@ -376,14 +376,28 @@ get_fts5_api (sqlite3 *db) {
        sqlite3_stmt *stmt;
        fts5_api *api = NULL;
 
-       rc = sqlite3_prepare_v2(db, "SELECT fts5()",
-                               -1, &stmt, 0);
+#if SQLITE_VERSION_NUMBER >= 3020000
+       /* Sqlite >= 3.20.0 mandates sqlite3_bind_pointer() to fetch fts5 */
+       if (sqlite3_libversion_number () >= 3020000) {
+               rc = sqlite3_prepare_v2(db, "SELECT fts5(?1)",
+                                       -1, &stmt, 0);
+               if (rc != SQLITE_OK)
+                       return NULL;
+
+               sqlite3_bind_pointer (stmt, 1, (void*) &api, "fts5_api_ptr", NULL);
+               sqlite3_step (stmt);
+       } else
+#endif
+       {
+               rc = sqlite3_prepare_v2(db, "SELECT fts5()",
+                                       -1, &stmt, 0);
 
-       if (rc != SQLITE_OK)
-               return NULL;
+               if (rc != SQLITE_OK)
+                       return NULL;
 
-       if (sqlite3_step (stmt) == SQLITE_ROW)
-               memcpy (&api, sqlite3_column_blob (stmt, 0), sizeof (api));
+               if (sqlite3_step (stmt) == SQLITE_ROW)
+                       memcpy (&api, sqlite3_column_blob (stmt, 0), sizeof (api));
+       }
 
        sqlite3_finalize (stmt);
 


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