summaryrefslogtreecommitdiff
path: root/src/libtracker-db
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2009-04-17 18:05:00 +0200
committerJürg Billeter <j@bitron.ch>2009-04-20 14:48:47 +0200
commit7fae774a0522fe0cc235fb82efac1c33b0c64d3b (patch)
tree827e9d8011a1ab369ee6bfd8238343ecbc2a14a3 /src/libtracker-db
parent9ac341517d8a62053c040b118fd0f3fe758fd500 (diff)
downloadtracker-7fae774a0522fe0cc235fb82efac1c33b0c64d3b.tar.gz
Add initial SQLite FTS support
Diffstat (limited to 'src/libtracker-db')
-rw-r--r--src/libtracker-db/Makefile.am18
-rw-r--r--src/libtracker-db/tracker-db-interface-sqlite.c15
-rw-r--r--src/libtracker-db/tracker-db-manager.c17
3 files changed, 35 insertions, 15 deletions
diff --git a/src/libtracker-db/Makefile.am b/src/libtracker-db/Makefile.am
index 4cfb83512..14a32d422 100644
--- a/src/libtracker-db/Makefile.am
+++ b/src/libtracker-db/Makefile.am
@@ -19,9 +19,6 @@ libtracker_db_la_SOURCES = \
tracker-db-action.c \
tracker-db-dbus.c \
tracker-db-file-info.c \
- tracker-db-index.c \
- tracker-db-index-item.c \
- tracker-db-index-manager.c \
tracker-db-interface.c \
tracker-db-interface-sqlite.c \
tracker-db-manager.c
@@ -30,13 +27,22 @@ noinst_HEADERS = \
tracker-db-action.h \
tracker-db-dbus.h \
tracker-db-file-info.h \
- tracker-db-index.h \
- tracker-db-index-item.h \
- tracker-db-index-manager.h \
tracker-db-interface.h \
tracker-db-interface-sqlite.h \
tracker-db-manager.h
+if !ENABLE_SQLITE_FTS
+libtracker_db_la_SOURCES += \
+ tracker-db-index.c \
+ tracker-db-index-item.c \
+ tracker-db-index-manager.c
+
+noinst_HEADERS += \
+ tracker-db-index.h \
+ tracker-db-index-item.h \
+ tracker-db-index-manager.h
+endif
+
libtracker_db_la_LDFLAGS = \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
diff --git a/src/libtracker-db/tracker-db-interface-sqlite.c b/src/libtracker-db/tracker-db-interface-sqlite.c
index 2347acc48..33a7d8435 100644
--- a/src/libtracker-db/tracker-db-interface-sqlite.c
+++ b/src/libtracker-db/tracker-db-interface-sqlite.c
@@ -18,6 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
+#include "config.h"
+
#include <glib/gstdio.h>
#include <sqlite3.h>
@@ -99,6 +101,7 @@ tracker_db_interface_sqlite_constructor (GType type,
{
GObject *object;
TrackerDBInterfaceSqlitePrivate *priv;
+ gchar *err_msg = NULL;
object = (* G_OBJECT_CLASS (tracker_db_interface_sqlite_parent_class)->constructor) (type,
n_construct_properties,
@@ -123,6 +126,18 @@ tracker_db_interface_sqlite_constructor (GType type,
sqlite3_extended_result_codes (priv->db, 0);
sqlite3_busy_timeout (priv->db, 10000000);
+#ifdef HAVE_SQLITE_FTS
+ sqlite3_enable_load_extension (priv->db, 1);
+ sqlite3_load_extension (priv->db, "tracker-fts.so", NULL, &err_msg);
+
+ if (err_msg) {
+ g_critical ("Could not load tracker-fts extension:'%s'", err_msg);
+ sqlite3_free (err_msg);
+ } else {
+ g_message ("Loaded tracker fts extension");
+ }
+#endif
+
return object;
}
diff --git a/src/libtracker-db/tracker-db-manager.c b/src/libtracker-db/tracker-db-manager.c
index a4bd27159..5dc29c19c 100644
--- a/src/libtracker-db/tracker-db-manager.c
+++ b/src/libtracker-db/tracker-db-manager.c
@@ -796,15 +796,6 @@ db_interface_get_fulltext (void)
iface = db_interface_get (TRACKER_DB_FULLTEXT, &create);
- /*
- * disabled to avoid warnings while not implemented
- if (create) {
- tracker_db_interface_start_transaction (iface);
- load_sql_file (iface, "sqlite-fulltext.sql", NULL);
- tracker_db_interface_end_transaction (iface);
- }
- */
-
return iface;
}
@@ -1214,10 +1205,18 @@ tracker_db_manager_init (TrackerDBManagerFlags flags,
initialized = TRUE;
+#ifdef HAVE_SQLITE_FTS
+ resources_iface = tracker_db_manager_get_db_interfaces (4,
+ TRACKER_DB_METADATA,
+ TRACKER_DB_FULLTEXT,
+ TRACKER_DB_CONTENTS,
+ TRACKER_DB_COMMON);
+#else
resources_iface = tracker_db_manager_get_db_interfaces (3,
TRACKER_DB_METADATA,
TRACKER_DB_CONTENTS,
TRACKER_DB_COMMON);
+#endif
}
void