tracker r1281 - in branches/indexer-split: . src/trackerd



Author: carlosg
Date: Mon Apr 21 12:47:52 2008
New Revision: 1281
URL: http://svn.gnome.org/viewvc/tracker?rev=1281&view=rev

Log:
2008-04-21  Carlos Garnacho  <carlos imendio com>

        * src/trackerd/tracker-db-interface.[ch]:
        * src/trackerd/tracker-db-interface-sqlite.c: Implement API to
        start/end a transaction. Do not allocate (and later free) any
        memory if a stmt doesn't return any rows. Add a GError parameter to
        all query methods.

        * src/trackerd/tracker-db-sqlite.h: do forward declaration for
        DBConnection, so it can hold pointers to structures of the same type
        instead of just gpointers.

        * src/trackerd/tracker-db-sqlite.c:
        * src/trackerd/tracker-dbus-files.c:
        * src/trackerd/tracker-dbus-keywords.c:
        * src/trackerd/tracker-dbus-metadata.c:
        * src/trackerd/tracker-dbus-search.c:
        * src/trackerd/tracker-email-evolution.c:
        * src/trackerd/tracker-email-modest.c:
        * src/trackerd/tracker-process-files.c:
        * src/trackerd/trackerd.c: Update to use new API.


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/trackerd/tracker-db-interface-sqlite.c
   branches/indexer-split/src/trackerd/tracker-db-interface.c
   branches/indexer-split/src/trackerd/tracker-db-interface.h
   branches/indexer-split/src/trackerd/tracker-db-sqlite.c
   branches/indexer-split/src/trackerd/tracker-db-sqlite.h
   branches/indexer-split/src/trackerd/tracker-dbus-files.c
   branches/indexer-split/src/trackerd/tracker-dbus-keywords.c
   branches/indexer-split/src/trackerd/tracker-dbus-metadata.c
   branches/indexer-split/src/trackerd/tracker-dbus-search.c
   branches/indexer-split/src/trackerd/tracker-email-evolution.c
   branches/indexer-split/src/trackerd/tracker-email-modest.c
   branches/indexer-split/src/trackerd/tracker-process-files.c
   branches/indexer-split/src/trackerd/trackerd.c

Modified: branches/indexer-split/src/trackerd/tracker-db-interface-sqlite.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-interface-sqlite.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-interface-sqlite.c	Mon Apr 21 12:47:52 2008
@@ -33,6 +33,8 @@
 	GHashTable *procedures;
 
 	GSList *function_data;
+
+	guint in_transaction : 1;
 };
 
 struct SqliteFunctionData {
@@ -44,7 +46,8 @@
 
 enum {
 	PROP_0,
-	PROP_FILENAME
+	PROP_FILENAME,
+	PROP_IN_TRANSACTION
 };
 
 G_DEFINE_TYPE_WITH_CODE (TrackerDBInterfaceSqlite, tracker_db_interface_sqlite, G_TYPE_OBJECT,
@@ -89,6 +92,9 @@
 	case PROP_FILENAME:
 		priv->filename = g_value_dup_string (value);
 		break;
+	case PROP_IN_TRANSACTION:
+		priv->in_transaction = g_value_get_boolean (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -108,6 +114,9 @@
 	case PROP_FILENAME:
 		g_value_set_string (value, priv->filename);
 		break;
+	case PROP_IN_TRANSACTION:
+		g_value_set_boolean (value, priv->in_transaction);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -123,7 +132,7 @@
 	g_free (priv->filename);
 
 	g_hash_table_destroy (priv->statements);
-	g_hash_table_destroy (priv->procedures);
+	g_hash_table_unref (priv->procedures);
 
 	g_slist_foreach (priv->function_data, (GFunc) g_free, NULL);
 	g_slist_free (priv->function_data);
@@ -150,6 +159,11 @@
 							      "DB filename",
 							      NULL,
 							      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+	/* Override properties from interface */
+	g_object_class_override_property (object_class,
+					  PROP_IN_TRANSACTION,
+					  "in-transaction");
+
 	g_type_class_add_private (object_class,
 				  sizeof (TrackerDBInterfaceSqlitePrivate));
 }
@@ -297,27 +311,26 @@
 }
 
 static void
-tracker_db_interface_sqlite_add_procedure (TrackerDBInterface *db_interface,
-					   const gchar        *procedure_name,
-					   const gchar        *procedure)
+tracker_db_interface_sqlite_set_procedure_table (TrackerDBInterface *db_interface,
+						 GHashTable         *procedure_table)
 {
 	TrackerDBInterfaceSqlitePrivate *priv;
 
 	priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
-
-	g_hash_table_insert (priv->procedures,
-			     g_strdup (procedure_name),
-			     g_strdup (procedure));
+	priv->procedures = g_hash_table_ref (procedure_table);
 }
 
 static TrackerDBResultSet *
-create_result_set_from_stmt (sqlite3_stmt *stmt)
+create_result_set_from_stmt (TrackerDBInterfaceSqlite  *interface,
+			     sqlite3_stmt              *stmt,
+			     GError                   **error)
 {
-	TrackerDBResultSet *result_set;
+	TrackerDBInterfaceSqlitePrivate *priv;
+	TrackerDBResultSet *result_set = NULL;
 	gint columns, result, busy_count;
 
+	priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (interface);
 	columns = sqlite3_column_count (stmt);
-	result_set = _tracker_db_result_set_new (columns);
 	result = SQLITE_OK;
 
 	while (result == SQLITE_OK  ||
@@ -346,11 +359,38 @@
 
 			break;
 		case SQLITE_ROW:
+			if (G_UNLIKELY (!result_set)) {
+				result_set = _tracker_db_result_set_new (columns);
+			}
+
 			add_row (result_set, stmt);
 			break;
 		}
 	}
 
+	if (result != SQLITE_DONE) {
+		if (result == SQLITE_CORRUPT) {
+			g_critical ("Database %s is corrupt. Can't live without it", priv->filename);
+			g_assert_not_reached ();
+		}
+
+		if (!error) {
+			g_warning (sqlite3_errmsg (priv->db));
+		} else {
+			g_set_error (error,
+				     TRACKER_DB_INTERFACE_ERROR,
+				     TRACKER_DB_QUERY_ERROR,
+				     sqlite3_errmsg (priv->db));
+		}
+
+		/* If there was an error, result set may be invalid or incomplete */
+		if (result_set) {
+			g_object_unref (result_set);
+		}
+
+		return NULL;
+	}
+
 	return result_set;
 }
 
@@ -390,9 +430,10 @@
 }
 
 static TrackerDBResultSet *
-tracker_db_interface_sqlite_execute_procedure (TrackerDBInterface *db_interface,
-					       const gchar        *procedure_name,
-					       va_list             args)
+tracker_db_interface_sqlite_execute_procedure (TrackerDBInterface  *db_interface,
+					       GError             **error,
+					       const gchar         *procedure_name,
+					       va_list              args)
 {
 	TrackerDBInterfaceSqlitePrivate *priv;
 	sqlite3_stmt *stmt;
@@ -405,20 +446,21 @@
 	n_args = 1;
 
 	while ((str = va_arg (args, gchar *)) != NULL) {
-		sqlite3_bind_text (stmt, n_args, str, -1, SQLITE_TRANSIENT);
+		sqlite3_bind_text (stmt, n_args, str, -1, SQLITE_STATIC);
 		n_args++;
 	}
 
 	/* Just panic if the number of arguments don't match */
 	g_assert (n_args != stmt_args);
 
-	return create_result_set_from_stmt (stmt);
+	return create_result_set_from_stmt (db_interface, stmt, error);
 }
 
 static TrackerDBResultSet *
-tracker_db_interface_sqlite_execute_procedure_len (TrackerDBInterface *db_interface,
-						   const gchar        *procedure_name,
-						   va_list             args)
+tracker_db_interface_sqlite_execute_procedure_len (TrackerDBInterface  *db_interface,
+						   GError             **error,
+						   const gchar         *procedure_name,
+						   va_list              args)
 {
 	TrackerDBInterfaceSqlitePrivate *priv;
 	sqlite3_stmt *stmt;
@@ -435,10 +477,10 @@
 
 		if (len == -1) {
 			/* Assume we're dealing with strings */
-			sqlite3_bind_text (stmt, n_args, str, len, SQLITE_TRANSIENT);
+			sqlite3_bind_text (stmt, n_args, str, len, SQLITE_STATIC);
 		} else {
 			/* Deal with it as a blob */
-			sqlite3_bind_blob (stmt, n_args, str, len, SQLITE_TRANSIENT);
+			sqlite3_bind_blob (stmt, n_args, str, len, SQLITE_STATIC);
 		}
 
 		n_args++;
@@ -447,12 +489,13 @@
 	/* Just panic if the number of arguments don't match */
 	g_assert (n_args != stmt_args);
 
-	return create_result_set_from_stmt (stmt);
+	return create_result_set_from_stmt (db_interface, stmt, error);
 }
 
 static TrackerDBResultSet *
-tracker_db_interface_sqlite_execute_query (TrackerDBInterface *db_interface,
-					   const gchar        *query)
+tracker_db_interface_sqlite_execute_query (TrackerDBInterface  *db_interface,
+					   GError             **error,
+					   const gchar         *query)
 {
 	TrackerDBInterfaceSqlitePrivate *priv;
 	TrackerDBResultSet *result_set;
@@ -463,10 +506,14 @@
 	sqlite3_prepare_v2 (priv->db, query, -1, &stmt, NULL);
 
 	if (!stmt) {
+		g_set_error (error,
+			     TRACKER_DB_INTERFACE_ERROR,
+			     TRACKER_DB_QUERY_ERROR,
+			     sqlite3_errmsg (priv->db));
 		return NULL;
 	}
 
-	result_set = create_result_set_from_stmt (stmt);
+	result_set = create_result_set_from_stmt (db_interface, stmt, error);
 	sqlite3_finalize (stmt);
 
 	return result_set;
@@ -475,7 +522,7 @@
 static void
 tracker_db_interface_sqlite_iface_init (TrackerDBInterfaceIface *iface)
 {
-	iface->add_procedure = tracker_db_interface_sqlite_add_procedure;
+	iface->set_procedure_table = tracker_db_interface_sqlite_set_procedure_table;
 	iface->execute_procedure = tracker_db_interface_sqlite_execute_procedure;
 	iface->execute_procedure_len = tracker_db_interface_sqlite_execute_procedure_len;
 	iface->execute_query = tracker_db_interface_sqlite_execute_query;

Modified: branches/indexer-split/src/trackerd/tracker-db-interface.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-interface.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-interface.c	Mon Apr 21 12:47:52 2008
@@ -40,26 +40,34 @@
 
 G_DEFINE_TYPE (TrackerDBResultSet, tracker_db_result_set, G_TYPE_OBJECT)
 
+GQuark
+tracker_db_interface_error_quark (void)
+{
+  return g_quark_from_static_string ("tracker-db-interface-error-quark");
+}
+
+static void
+tracker_db_interface_class_init (gpointer iface)
+{
+  g_object_interface_install_property (iface,
+				       g_param_spec_boolean ("in-transaction",
+							     "In transaction",
+							     "Whether the connection has a transaction opened",
+							     FALSE,
+							     G_PARAM_READWRITE));
+}
+
 GType
 tracker_db_interface_get_type (void)
 {
 	static GType type = 0;
 
 	if (G_UNLIKELY (type == 0)) {
-		const GTypeInfo type_info = {
-			sizeof (TrackerDBInterfaceIface), /* class_size */
-			NULL, /* base_init */
-			NULL, /* base_finalize */
-			NULL,
-			NULL, /* class_finalize */
-			NULL, /* class_data */
-			0,
-			0,    /* n_preallocs */
-			NULL
-		};
-
-		type = g_type_register_static (G_TYPE_INTERFACE, "TrackerDBInterface",
-					       &type_info, 0);
+		type = g_type_register_static_simple (G_TYPE_INTERFACE,
+						      "TrackerDBInterface",
+						      sizeof (TrackerDBInterfaceIface),
+						      (GClassInitFunc) tracker_db_interface_class_init,
+						      0, NULL, 0);
 
 		g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
 	}
@@ -223,9 +231,10 @@
 }
 
 TrackerDBResultSet *
-tracker_db_interface_execute_vquery (TrackerDBInterface   *interface,
-				     const gchar          *query,
-				     va_list               args)
+tracker_db_interface_execute_vquery (TrackerDBInterface  *interface,
+				     GError             **error,
+				     const gchar         *query,
+				     va_list              args)
 {
 	TrackerDBResultSet *result_set = NULL;
 	gchar *str;
@@ -239,47 +248,48 @@
 	}
 
 	str = g_strdup_vprintf (query, args);
-	result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_query (interface, str);
+	result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_query (interface, error, str);
 	g_free (str);
 
 	return ensure_result_set_state (result_set);
 }
 
 TrackerDBResultSet *
-tracker_db_interface_execute_query (TrackerDBInterface   *interface,
-				    const gchar          *query,
+tracker_db_interface_execute_query (TrackerDBInterface  *interface,
+				    GError             **error,
+				    const gchar         *query,
 				    ...)
 {
 	TrackerDBResultSet *result_set;
 	va_list args;
 
 	va_start (args, query);
-	result_set = tracker_db_interface_execute_vquery (interface, query, args);
+	result_set = tracker_db_interface_execute_vquery (interface, error, query, args);
 	va_end (args);
 
 	return result_set;
 }
 
 void
-tracker_db_interface_add_procedure (TrackerDBInterface *interface,
-				    const gchar        *procedure_name,
-				    const gchar        *procedure)
+tracker_db_interface_set_procedure_table (TrackerDBInterface *interface,
+					  GHashTable         *procedure_table)
 {
 	g_return_if_fail (TRACKER_IS_DB_INTERFACE (interface));
-	g_return_if_fail (procedure != NULL);
+	g_return_if_fail (procedure_table != NULL);
 
-	if (!TRACKER_DB_INTERFACE_GET_IFACE (interface)->add_procedure) {
-		g_critical ("Database abstraction %s doesn't implement the method add_procedure()", G_OBJECT_TYPE_NAME (interface));
+	if (!TRACKER_DB_INTERFACE_GET_IFACE (interface)->set_procedure_table) {
+		g_critical ("Database abstraction %s doesn't implement the method set_procedure_table()", G_OBJECT_TYPE_NAME (interface));
 		return;
 	}
 
-	TRACKER_DB_INTERFACE_GET_IFACE (interface)->add_procedure (interface, procedure_name, procedure);
+	TRACKER_DB_INTERFACE_GET_IFACE (interface)->set_procedure_table (interface, procedure_table);
 }
 
 TrackerDBResultSet *
-tracker_db_interface_execute_vprocedure (TrackerDBInterface *interface,
-					 const gchar        *procedure,
-					 va_list             args)
+tracker_db_interface_execute_vprocedure (TrackerDBInterface  *interface,
+					 GError             **error,
+					 const gchar         *procedure,
+					 va_list              args)
 {
 	TrackerDBResultSet *result_set;
 
@@ -291,15 +301,16 @@
 		return NULL;
 	}
 
-	result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure (interface, procedure, args);
+	result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure (interface, error, procedure, args);
 
 	return ensure_result_set_state (result_set);
 }
 
 TrackerDBResultSet *
-tracker_db_interface_execute_vprocedure_len (TrackerDBInterface *interface,
-					     const gchar        *procedure,
-					     va_list             args)
+tracker_db_interface_execute_vprocedure_len (TrackerDBInterface  *interface,
+					     GError             **error,
+					     const gchar         *procedure,
+					     va_list              args)
 {
 	TrackerDBResultSet *result_set;
 
@@ -311,41 +322,86 @@
 		return NULL;
 	}
 
-	result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure_len (interface, procedure, args);
+	result_set = TRACKER_DB_INTERFACE_GET_IFACE (interface)->execute_procedure_len (interface, error, procedure, args);
 
 	return ensure_result_set_state (result_set);
 }
 
 TrackerDBResultSet *
-tracker_db_interface_execute_procedure (TrackerDBInterface   *interface,
-					const gchar          *procedure,
+tracker_db_interface_execute_procedure (TrackerDBInterface  *interface,
+					GError             **error,
+					const gchar         *procedure,
 					...)
 {
 	TrackerDBResultSet *result_set;
 	va_list args;
 
 	va_start (args, procedure);
-	result_set = tracker_db_interface_execute_vprocedure (interface, procedure, args);
+	result_set = tracker_db_interface_execute_vprocedure (interface, error, procedure, args);
 	va_end (args);
 
 	return result_set;
 }
 
 TrackerDBResultSet *
-tracker_db_interface_execute_procedure_len (TrackerDBInterface   *interface,
-					    const gchar          *procedure,
+tracker_db_interface_execute_procedure_len (TrackerDBInterface  *interface,
+					    GError             **error,
+					    const gchar         *procedure,
 					    ...)
 {
 	TrackerDBResultSet *result_set;
 	va_list args;
 
 	va_start (args, procedure);
-	result_set = tracker_db_interface_execute_vprocedure_len (interface, procedure, args);
+	result_set = tracker_db_interface_execute_vprocedure_len (interface, error, procedure, args);
 	va_end (args);
 
 	return result_set;
 }
 
+gboolean
+tracker_db_interface_start_transaction (TrackerDBInterface *interface)
+{
+	GError *error = NULL;
+
+	tracker_db_interface_execute_query (interface, &error, "BEGIN TRANSACTION");
+
+	if (error) {
+		g_warning (error->message);
+		g_error_free (error);
+		return FALSE;
+	}
+
+	g_object_set (interface, "in-transaction", TRUE, NULL);
+	return TRUE;
+}
+
+gboolean
+tracker_db_interface_end_transaction (TrackerDBInterface *interface)
+{
+	gboolean in_transaction;
+	GError *error = NULL;
+
+	g_object_get (interface, "in-transaction", &in_transaction, NULL);
+
+	if (!in_transaction)
+		return FALSE;
+
+	g_object_set (interface, "in-transaction", FALSE, NULL);
+	tracker_db_interface_execute_query (interface, &error, "COMMIT");
+
+	if (error) {
+		g_warning (error->message);
+		g_error_free (error);
+
+		tracker_db_interface_execute_query (interface, NULL, "ROLLBACK");
+
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
 /* TrackerDBResultSet semiprivate API */
 TrackerDBResultSet *
 _tracker_db_result_set_new (guint columns)

Modified: branches/indexer-split/src/trackerd/tracker-db-interface.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-interface.h	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-interface.h	Mon Apr 21 12:47:52 2008
@@ -38,6 +38,12 @@
 
 #define TRACKER_TYPE_DB_BLOB                (tracker_db_blob_get_type ())
 
+#define TRACKER_DB_INTERFACE_ERROR          (tracker_db_interface_error_quark ())
+
+typedef enum {
+	TRACKER_DB_QUERY_ERROR,
+	TRACKER_DB_CORRUPT
+} TrackerDBInterfaceError;
 
 typedef struct TrackerDBInterface TrackerDBInterface;
 typedef struct TrackerDBInterfaceIface TrackerDBInterfaceIface;
@@ -47,17 +53,19 @@
 struct TrackerDBInterfaceIface {
 	GTypeInterface iface;
 
-	void                 (* add_procedure)         (TrackerDBInterface *interface,
-							const gchar        *procedure_name,
-							const gchar        *procedure);
-	TrackerDBResultSet * (* execute_procedure)     (TrackerDBInterface *interface,
-							const gchar        *procedure,
-							va_list             args);
-	TrackerDBResultSet * (* execute_procedure_len) (TrackerDBInterface *interface,
-							const gchar        *procedure,
-							va_list             args);
-	TrackerDBResultSet * (* execute_query)         (TrackerDBInterface *interface,
-							const gchar        *query);
+	void                 (* set_procedure_table)   (TrackerDBInterface  *interface,
+							GHashTable          *procedure_table);
+	TrackerDBResultSet * (* execute_procedure)     (TrackerDBInterface  *interface,
+							GError             **error,
+							const gchar         *procedure,
+							va_list              args);
+	TrackerDBResultSet * (* execute_procedure_len) (TrackerDBInterface  *interface,
+							GError             **error,
+							const gchar         *procedure,
+							va_list              args);
+	TrackerDBResultSet * (* execute_query)         (TrackerDBInterface  *interface,
+							GError             **error,
+							const gchar         *query);
 };
 
 struct TrackerDBResultSet {
@@ -69,35 +77,46 @@
 };
 
 
+GQuark tracker_db_interface_error_quark (void);
+
 GType tracker_db_interface_get_type (void);
 GType tracker_db_result_set_get_type (void);
 GType tracker_db_blob_get_type (void);
 
 
 /* Functions to create queries/procedures */
-TrackerDBResultSet *    tracker_db_interface_execute_vquery     (TrackerDBInterface   *interface,
-								 const gchar          *query,
-								 va_list               args);
-TrackerDBResultSet *    tracker_db_interface_execute_query      (TrackerDBInterface   *interface,
-								 const gchar          *query,
-								 ...) G_GNUC_PRINTF (2, 3);
-void                    tracker_db_interface_add_procedure      (TrackerDBInterface   *interface,
-								 const gchar          *procedure_name,
-								 const gchar          *procedure);
-TrackerDBResultSet *    tracker_db_interface_execute_vprocedure (TrackerDBInterface   *interface,
-								 const gchar          *procedure,
-								 va_list               args);
-TrackerDBResultSet *    tracker_db_interface_execute_procedure  (TrackerDBInterface   *interface,
-								 const gchar          *procedure,
-								 ...) G_GNUC_NULL_TERMINATED;
+TrackerDBResultSet *    tracker_db_interface_execute_vquery      (TrackerDBInterface   *interface,
+								  GError             **error,
+								  const gchar          *query,
+								  va_list               args);
+TrackerDBResultSet *    tracker_db_interface_execute_query       (TrackerDBInterface   *interface,
+								  GError             **error,
+								  const gchar          *query,
+								  ...) G_GNUC_PRINTF (3, 4);
+void                    tracker_db_interface_set_procedure_table (TrackerDBInterface   *interface,
+								  GHashTable           *procedure_table);
+TrackerDBResultSet *    tracker_db_interface_execute_vprocedure  (TrackerDBInterface   *interface,
+								  GError             **error,
+								  const gchar          *procedure,
+								  va_list               args);
+TrackerDBResultSet *    tracker_db_interface_execute_procedure   (TrackerDBInterface   *interface,
+								  GError             **error,
+								  const gchar          *procedure,
+								  ...) G_GNUC_NULL_TERMINATED;
 
 TrackerDBResultSet *    tracker_db_interface_execute_vprocedure_len (TrackerDBInterface   *interface,
+								     GError             **error,
 								     const gchar          *procedure,
 								     va_list               args);
 TrackerDBResultSet *    tracker_db_interface_execute_procedure_len  (TrackerDBInterface   *interface,
+								     GError             **error,
 								     const gchar          *procedure,
 								     ...) G_GNUC_NULL_TERMINATED;
 
+gboolean                tracker_db_interface_start_transaction      (TrackerDBInterface   *interface);
+gboolean                tracker_db_interface_end_transaction        (TrackerDBInterface   *interface);
+
+
 /* Semi private TrackerDBResultSet functions */
 TrackerDBResultSet *      _tracker_db_result_set_new           (guint               cols);
 void                      _tracker_db_result_set_append        (TrackerDBResultSet *result_set);

Modified: branches/indexer-split/src/trackerd/tracker-db-sqlite.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-sqlite.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-sqlite.c	Mon Apr 21 12:47:52 2008
@@ -64,6 +64,7 @@
 
 extern Tracker *tracker;
 
+static GHashTable *prepared_queries;
 //static GMutex *sequence_mutex;
 
 gboolean use_nfs_safe_locking = FALSE;
@@ -393,14 +394,16 @@
 }
 
 
-static gboolean
-tracker_db_initialize (TrackerDBInterface *db)
+gboolean
+tracker_db_initialize (void)
 {
 	FILE	 *file;
 	char	 *sql_file;
 	GTimeVal *tv;
 	int i = 0;
 
+	prepared_queries = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
 	tracker_log ("Loading prepared queries...");
 
 	sql_file = g_build_filename (SHAREDIR, "tracker", "sqlite-stored-procs.sql", NULL);
@@ -445,7 +448,7 @@
 			name = buffer;
 
 			//tracker_log ("installing query %s with sql %s", name, query);
-			tracker_db_interface_add_procedure (db, name, query);
+			g_hash_table_insert (prepared_queries, g_strdup (name), g_strdup (query));
 		} else {
 			continue;
 		}
@@ -549,7 +552,7 @@
 	}
 
 	db = tracker_db_interface_sqlite_new (dbname);
-	tracker_db_initialize (db);
+	tracker_db_interface_set_procedure_table (db, prepared_queries);
 	g_free (dbname);
 
 	return db;
@@ -576,7 +579,7 @@
 	}
 
 	db = tracker_db_interface_sqlite_new (dbname);
-	tracker_db_initialize (db);
+	tracker_db_interface_set_procedure_table (db, prepared_queries);
 	g_free (dbname);
 
 	return db;
@@ -777,25 +780,17 @@
 void
 tracker_db_start_index_transaction (DBConnection *db_con)
 {
-	DBConnection *tmp;
 	DBConnection *email_db_con = db_con->emails;
 
-
-	tmp = db_con->common;
-	if (!tmp->in_transaction) tracker_db_start_transaction (tmp);
-	
+	tracker_db_interface_start_transaction (db_con->common->db);
 
 	/* files */
-	if (!db_con->in_transaction) tracker_db_start_transaction (db_con);
-
-	tmp = db_con->blob;
-	if (!tmp->in_transaction) tracker_db_start_transaction (tmp);
+	tracker_db_interface_start_transaction (db_con->db);
+	tracker_db_interface_start_transaction (db_con->blob->db);
 
 	/* emails */
-	if (!email_db_con->in_transaction) tracker_db_start_transaction (email_db_con);
-
-	tmp = email_db_con->blob;
-	if (!tmp->in_transaction) tracker_db_start_transaction (tmp);
+	tracker_db_interface_start_transaction (email_db_con->db);
+	tracker_db_interface_start_transaction (email_db_con->blob->db);
 }
 
 
@@ -803,34 +798,17 @@
 void
 tracker_db_end_index_transaction (DBConnection *db_con)
 {
-	DBConnection *tmp;
 	DBConnection *email_db_con = db_con->emails;
 
-	tmp = db_con->common;
-	if (tmp->in_transaction) {
-		tracker_db_end_transaction (tmp);
-	}
+	tracker_db_interface_end_transaction (db_con->common->db);
 
 	/* files */
-	if (db_con->in_transaction) {
-		tracker_db_end_transaction (db_con);
-	}
-
-	tmp = db_con->blob;
-	if (tmp->in_transaction) {
-		tracker_db_end_transaction (tmp);
-	}
+	tracker_db_interface_end_transaction (db_con->db);
+	tracker_db_interface_end_transaction (db_con->blob->db);
 
 	/* emails */
-	if (email_db_con->in_transaction) {
-		tracker_db_end_transaction (email_db_con);
-	}
-
-	tmp = email_db_con->blob;
-	if (tmp->in_transaction) {
-		tracker_db_end_transaction (tmp);
-	}
-
+	tracker_db_interface_end_transaction (email_db_con->db);
+	tracker_db_interface_end_transaction (email_db_con->blob->db);
 }
 
 
@@ -866,7 +844,7 @@
 
 	db_con = g_new0 (DBConnection, 1);
 	db_con->db = tracker_db_interface_sqlite_new (dbname);
-	tracker_db_initialize (db_con->db);
+	tracker_db_interface_set_procedure_table (db_con->db, prepared_queries);
 	g_free (dbname);
 
 	db_con->db_type = TRACKER_DB_TYPE_DATA;
@@ -1077,8 +1055,7 @@
 	DBConnection *cache = db_con->cache;
 	DBConnection *emails = db_con->emails;
 
-	if (cache && cache->in_transaction) {
-		tracker_db_end_transaction (cache);
+	if (cache && tracker_db_interface_end_transaction (cache->db)) {
 		cache_trans = TRUE;
 	}
 
@@ -1098,7 +1075,7 @@
 	open_email_db (emails);
 		
 	if (cache_trans) {
-		tracker_db_start_transaction (cache);
+		tracker_db_interface_start_transaction (cache->db);
 	}
 
 
@@ -1110,8 +1087,7 @@
 	gboolean cache_trans = FALSE;
 	DBConnection *cache = db_con->cache;
 
-	if (cache && cache->in_transaction) {
-		tracker_db_end_transaction (cache);
+	if (cache && tracker_db_interface_end_transaction (cache->db)) {
 		cache_trans = TRUE;
 	}
 
@@ -1128,10 +1104,8 @@
 	open_email_db (emails);
 
 	if (cache_trans) {
-		tracker_db_start_transaction (cache);
+		tracker_db_interface_start_transaction (cache->db);
 	}
-
-	
 }
 
 DBConnection *
@@ -1156,7 +1130,7 @@
 
 	db_con = g_new0 (DBConnection, 1);
 	db_con->db = tracker_db_interface_sqlite_new (dbname);
-	tracker_db_initialize (db_con->db);
+	tracker_db_interface_set_procedure_table (db_con->db, prepared_queries);
 	g_free (dbname);
 
 	db_con->db_type = TRACKER_DB_TYPE_CACHE;
@@ -1202,7 +1176,7 @@
 
 	db_con = g_new0 (DBConnection, 1);
 	db_con->db = tracker_db_interface_sqlite_new (dbname);
-	tracker_db_initialize (db_con->db);
+	tracker_db_interface_set_procedure_table (db_con->db, prepared_queries);
 	g_free (dbname);
 
 
@@ -1396,10 +1370,13 @@
 	lock_db();
 
 	va_start (args, query);
-	result_set = tracker_db_interface_execute_vquery (db_con->db, query, args);
+	result_set = tracker_db_interface_execute_vquery (db_con->db, NULL, query, args);
 	va_end (args);
 
-	if (result_set) {
+	/* This function is meant for queries that don't return any result set,
+	 * if it's passed some query that returns a result set, just discard it.
+	 */
+	if (G_UNLIKELY (result_set)) {
 		g_object_unref (result_set);
 	}
 
@@ -1438,7 +1415,7 @@
 	va_list args;
 
 	va_start (args, procedure);
-	result_set = tracker_db_interface_execute_vprocedure (db_con->db, procedure, args);
+	result_set = tracker_db_interface_execute_vprocedure (db_con->db, NULL, procedure, args);
 	va_end (args);
 
 	return result_set;
@@ -1452,7 +1429,7 @@
 	va_list args;
 
 	va_start (args, procedure);
-	result_set = tracker_db_interface_execute_vprocedure (db_con->db, procedure, args);
+	result_set = tracker_db_interface_execute_vprocedure (db_con->db, NULL, procedure, args);
 	va_end (args);
 
 	if (result_set) {
@@ -1562,7 +1539,7 @@
 	int i;
 
 	result_set = tracker_db_interface_execute_query
-		(db_con->db, "SELECT OptionValue FROM Options WHERE OptionKey = 'DBVersion'");
+		(db_con->db, NULL, "SELECT OptionValue FROM Options WHERE OptionKey = 'DBVersion'");
 
 	if (!result_set) {
 		return FALSE;
@@ -1597,9 +1574,9 @@
 		load_sql_file (db_con, "sqlite-service-types.sql");
 		load_sql_file (db_con, "sqlite-metadata.sql");
 
-		tracker_db_interface_execute_query (db_con->db,
+		tracker_db_interface_execute_query (db_con->db, NULL,
 						    "update Options set OptionValue = '16' where OptionKey = 'DBVersion'");
-		tracker_db_interface_execute_query (db_con->db, "ANALYZE");
+		tracker_db_interface_execute_query (db_con->db, NULL, "ANALYZE");
 	}
 
 	/* apply and table changes for each version update */
@@ -1692,7 +1669,7 @@
 	str_file_id = tracker_uint_to_str (id);
 
 	lock_connection (db_con);
-	result_set = tracker_db_interface_execute_procedure (db_con->db, "GetAllContents", str_file_id, NULL);
+	result_set = tracker_db_interface_execute_procedure (db_con->db, NULL, "GetAllContents", str_file_id, NULL);
 	unlock_connection (db_con);
 
 	g_free (str_file_id);
@@ -1796,6 +1773,7 @@
 	}
 
 	tracker_db_interface_execute_procedure_len (blob_db_con->db,
+						    NULL,
 						    "SaveServiceContents",
 						    str_file_id, -1,
 						    def->id, -1,
@@ -1832,6 +1810,7 @@
 	}
 
 	tracker_db_interface_execute_procedure_len (blob_db_con->db,
+						    NULL,
 						    "SaveServiceContents",
 						    str_file_id, -1,
 						    def->id, -1,
@@ -2025,52 +2004,12 @@
 void
 tracker_db_clear_temp (DBConnection *db_con)
 {
-	tracker_db_start_transaction (db_con->cache);
+	tracker_db_interface_start_transaction (db_con->cache->db);
 	tracker_db_exec_no_reply (db_con->cache, "DELETE FROM FilePending");
 	tracker_db_exec_no_reply (db_con->cache, "DELETE FROM FileWatches");
-	tracker_db_end_transaction (db_con->cache);
-}
-
-
-
-gboolean
-tracker_db_start_transaction (DBConnection *db_con)
-{
-	//if (db_con->in_transaction) {
-	//	tracker_error ("Error - cannot start transaction - database is already in a transaction");
-	//}
-
-	if (!tracker_db_exec_no_reply (db_con, "BEGIN TRANSACTION")) {
-		tracker_error ("could not start transaction");
-		return FALSE;
-	}
-
-	db_con->in_transaction = TRUE;
-	return TRUE;
-}
-
-
-gboolean
-tracker_db_end_transaction (DBConnection *db_con)
-{
-
-	if (!db_con->in_transaction) {
-		tracker_error ("Error - cannot end transaction. Rolling back...");
-		return FALSE;
-	}
-
-	db_con->in_transaction = FALSE;
-
-	if (!tracker_db_exec_no_reply (db_con, "COMMIT")) {
-		tracker_error ("could not commit transaction");
-		tracker_db_exec_no_reply (db_con, "ROLLBACK");		
-		return FALSE;
-	}	
-	
-	return TRUE;
+	tracker_db_interface_end_transaction (db_con->cache->db);
 }
 
-
 void
 tracker_db_check_tables (DBConnection *db_con)
 {
@@ -2125,7 +2064,7 @@
 
 		if (count > limit) count = limit;
 	} else {
-		tracker_db_start_transaction (db_con);
+		tracker_db_interface_start_transaction (db_con->db);
 		tracker_exec_proc (db_con, "DeleteSearchResults1", NULL);
 	}
 
@@ -2212,7 +2151,7 @@
 	}
 
 	if (save_results) {
-		tracker_db_end_transaction (db_con);
+		tracker_db_interface_end_transaction (db_con->db);
 	}
 
 	/* delete duds */
@@ -3648,14 +3587,14 @@
 
 
 	/* delete all files underneath directory 
-	tracker_db_start_transaction (db_con);
+	tracker_db_interface_start_transaction (db_con->db);
 	tracker_exec_proc (db_con, "DeleteService2", uri, NULL);
 	tracker_exec_proc (db_con, "DeleteService3", uri_prefix, NULL);
 	tracker_exec_proc (db_con, "DeleteService4", uri, NULL);
 	tracker_exec_proc (db_con, "DeleteService5", uri_prefix, NULL);
 	tracker_exec_proc (db_con, "DeleteService8", uri, uri_prefix, NULL);
 	tracker_exec_proc (db_con, "DeleteService10", uri, uri_prefix, NULL);
-	tracker_db_end_transaction (db_con);
+	tracker_db_interface_end_transaction (db_con->db);
 	*/
 
 	/* delete directory */
@@ -3785,7 +3724,7 @@
 
 	tracker_db_exec_no_reply (cache, "DELETE FROM FilePending WHERE ID IN (SELECT ID FROM FileTemp)");
 
-	return tracker_db_interface_execute_query (cache->db, "SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM FileTemp ORDER BY ID");
+	return tracker_db_interface_execute_query (cache->db, NULL, "SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM FileTemp ORDER BY ID");
 }
 
 
@@ -3814,7 +3753,7 @@
 	tracker_db_exec_no_reply (cache, str);
 	tracker_db_exec_no_reply (cache, "DELETE FROM FilePending WHERE ID IN (SELECT ID FROM MetadataTemp)");
 
-	return tracker_db_interface_execute_query (cache->db, "SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM MetadataTemp ORDER BY ID");
+	return tracker_db_interface_execute_query (cache->db, NULL, "SELECT FileID, FileUri, Action, MimeType, IsDir, IsNew, RefreshEmbedded, RefreshContents, ServiceTypeID FROM MetadataTemp ORDER BY ID");
 }
 
 
@@ -3931,7 +3870,7 @@
 
 	tracker_debug ("getting files with mimes using sql %s", query);
 
-	result_set = tracker_db_interface_execute_query (db_con->db, query);
+	result_set = tracker_db_interface_execute_query (db_con->db, NULL, query);
 
 	g_free (query);
 
@@ -4291,7 +4230,7 @@
 	if (id == 0) {
 		tracker_debug ("WARNING: original file %s not found in DB", moved_from_uri);
 		tracker_db_insert_pending_file (db_con, id, moved_to_uri,  NULL, "unknown", 0, TRACKER_ACTION_WRITABLE_FILE_CLOSED, FALSE, TRUE, -1);
-		tracker_db_end_transaction (db_con);
+		tracker_db_interface_end_transaction (db_con->db);
 		return;
 	}
 
@@ -5312,7 +5251,7 @@
 	TrackerDBResultSet *result_set;
 	gboolean integrity_check = TRUE;
 
-	result_set = tracker_db_interface_execute_query (db_con->db, "pragma integrity_check;");
+	result_set = tracker_db_interface_execute_query (db_con->db, NULL, "pragma integrity_check;");
 
 	if (!result_set) {
 		integrity_check = FALSE;

Modified: branches/indexer-split/src/trackerd/tracker-db-sqlite.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-sqlite.h	(original)
+++ branches/indexer-split/src/trackerd/tracker-db-sqlite.h	Mon Apr 21 12:47:52 2008
@@ -38,9 +38,9 @@
 
 
 
+typedef struct DBConnection DBConnection;
 
-
-typedef struct {
+struct DBConnection {
 	TrackerDBInterface *db;
 	TrackerDBType   db_type;
 	DBCategory	db_category;
@@ -54,19 +54,17 @@
 	guint           in_error : 1;
 
 	/* pointers to other database connection objects */
-	gpointer	data;
-	gpointer	common;
-	gpointer	files;
-	gpointer	index;
-	gpointer	emails;
-	gpointer	others;
-	gpointer	blob;
-	gpointer	cache;
-	gpointer	user;
+	DBConnection	*data;
+	DBConnection	*common;
+	DBConnection	*files;
+	DBConnection	*index;
+	DBConnection	*emails;
+	DBConnection	*others;
+	DBConnection	*blob;
+	DBConnection	*cache;
+	DBConnection	*user;
 	gpointer	word_index;
-
-
-} DBConnection;
+};
 
 
 char **		tracker_db_get_row		(char ***result, int num);
@@ -78,6 +76,7 @@
 
 gboolean	tracker_db_needs_setup		(void);
 gboolean 	tracker_db_needs_data 		(void);
+gboolean        tracker_db_initialize           (void);
 void		tracker_db_thread_init		(void);
 void		tracker_db_thread_end		(void);
 void		tracker_db_close		(DBConnection *db_con);

Modified: branches/indexer-split/src/trackerd/tracker-dbus-files.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-dbus-files.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-dbus-files.c	Mon Apr 21 12:47:52 2008
@@ -991,7 +991,7 @@
 	g_free (uri_filtered);
 
 	query = g_string_free (sql, FALSE);
-	result_set = tracker_db_interface_execute_query (db_con->db, query);
+	result_set = tracker_db_interface_execute_query (db_con->db, NULL, query);
 	*values = tracker_dbus_query_result_to_ptr_array (result_set);
 
 	if (result_set) {

Modified: branches/indexer-split/src/trackerd/tracker-dbus-keywords.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-dbus-keywords.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-dbus-keywords.c	Mon Apr 21 12:47:52 2008
@@ -603,7 +603,7 @@
 
 	tracker_debug (query);
 
-	result_set = tracker_db_interface_execute_query (db_con->db, query);
+	result_set = tracker_db_interface_execute_query (db_con->db, NULL, query);
 	*values = tracker_dbus_query_result_to_strv (result_set, NULL);
 
 	if (result_set) {

Modified: branches/indexer-split/src/trackerd/tracker-dbus-metadata.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-dbus-metadata.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-dbus-metadata.c	Mon Apr 21 12:47:52 2008
@@ -270,7 +270,7 @@
 
 	tracker_debug (query);
 
-	result_set = tracker_db_interface_execute_query (db_con->db, query);
+	result_set = tracker_db_interface_execute_query (db_con->db, NULL, query);
 	*values = tracker_dbus_query_result_to_strv (result_set, NULL);
 	g_free (query);
 

Modified: branches/indexer-split/src/trackerd/tracker-dbus-search.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-dbus-search.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-dbus-search.c	Mon Apr 21 12:47:52 2008
@@ -939,7 +939,7 @@
                                                 FALSE);
 		}
 
-		result_set = tracker_db_interface_execute_query (db_con->db, query_translated);
+		result_set = tracker_db_interface_execute_query (db_con->db, NULL, query_translated);
 		g_free (query_translated);
 	}
 

Modified: branches/indexer-split/src/trackerd/tracker-email-evolution.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-email-evolution.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-email-evolution.c	Mon Apr 21 12:47:52 2008
@@ -271,7 +271,7 @@
 	if (tracker_db_get_option_int (db_con->common, "InitialIndex") == 1) {
 		char *sql = g_strdup_printf ("update Services set mtime = 0 where path like '%s/.evolution/%s'", g_get_home_dir (), "%");
 
-		tracker_db_interface_execute_query (db_con->db, sql);
+		tracker_db_interface_execute_query (db_con->db, NULL, sql);
 		g_free (sql);
 	}
 

Modified: branches/indexer-split/src/trackerd/tracker-email-modest.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-email-modest.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-email-modest.c	Mon Apr 21 12:47:52 2008
@@ -281,7 +281,7 @@
 	if (tracker_db_get_option_int (db_con->common, "InitialIndex") == 1) {
 		char *sql = g_strdup_printf ("update Services set mtime = 0 where path like '%s/.modest/%s'", g_get_home_dir (), "%");
 
-		tracker_db_interface_execute_query (db_con->db, sql);
+		tracker_db_interface_execute_query (db_con->db, NULL, sql);
 		g_free (sql);
 	}
 

Modified: branches/indexer-split/src/trackerd/tracker-process-files.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-process-files.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-process-files.c	Mon Apr 21 12:47:52 2008
@@ -659,14 +659,14 @@
         db_con = tracker->index_db;
 
         tracker_db_start_index_transaction (db_con);
-        tracker_db_start_transaction (db_con->cache);
+        tracker_db_interface_start_transaction (db_con->cache->db);
         
         tracker_applications_add_service_directories ();
         
         list = tracker_get_service_dirs ("Applications");
         process_directory_list (tracker, list, FALSE);
 
-        tracker_db_end_transaction (db_con->cache);
+        tracker_db_interface_end_transaction (db_con->cache->db);
         
         g_slist_free (list);
 }
@@ -816,7 +816,7 @@
                 return;
         }
         
-        tracker_db_start_transaction (db_con->cache);
+        tracker_db_interface_start_transaction (db_con->cache->db);
         
         /* Index watched dirs first */
         process_watch_directories (tracker, index_include);
@@ -845,7 +845,7 @@
                 crawl_directories = NULL;
         }
         
-        tracker_db_end_transaction (db_con->cache);
+        tracker_db_interface_end_transaction (db_con->cache->db);
 
         /* Signal progress */
         g_signal_emit_by_name (object, "index-progress", 
@@ -922,7 +922,7 @@
                 return;
         }
         
-        tracker_db_start_transaction (db_con->cache);
+        tracker_db_interface_start_transaction (db_con->cache->db);
         
         process_index_crawl_add_directories (tracker, crawl_directory_roots);
         
@@ -946,7 +946,7 @@
                 crawl_directories = NULL;
         }
         
-        tracker_db_end_transaction (db_con->cache);
+        tracker_db_interface_end_transaction (db_con->cache->db);
 }
 
 static void
@@ -977,9 +977,9 @@
                 db_con = tracker->index_db;
 
                 tracker_log ("Starting chat log indexing...");
-                tracker_db_start_transaction (db_con->cache);
+                tracker_db_interface_start_transaction (db_con->cache->db);
                 process_directory_list (tracker, list, TRUE);
-                tracker_db_end_transaction (db_con->cache);
+                tracker_db_interface_end_transaction (db_con->cache->db);
                 g_slist_free (list);
         }
         
@@ -1005,9 +1005,9 @@
                 tracker_log ("Starting Firefox web history indexing...");
                 tracker_add_service_path ("WebHistory", firefox_dir);
                 
-                tracker_db_start_transaction (db_con->cache);		
+                tracker_db_interface_start_transaction (db_con->cache->db);
                 process_directory_list (tracker, list, TRUE);
-                tracker_db_end_transaction (db_con->cache);
+                tracker_db_interface_end_transaction (db_con->cache->db);
                 g_slist_free (list);
         }
 
@@ -1056,7 +1056,7 @@
                 tracker_email_add_service_directories (db_con->emails);
                 tracker_log ("Starting email indexing...");
                 
-                tracker_db_start_transaction (db_con->cache);
+                tracker_db_interface_start_transaction (db_con->cache->db);
 
 		name = tracker_email_get_name ();
 
@@ -1068,7 +1068,7 @@
                         g_slist_free (list);
                 }
                 
-                tracker_db_end_transaction (db_con->cache);
+                tracker_db_interface_end_transaction (db_con->cache->db);
         }
 }
 
@@ -1192,13 +1192,13 @@
                 
                 tracker_log ("Updating database stats, please wait...");
                 
-                tracker_db_start_transaction (db_con);
+                tracker_db_interface_start_transaction (db_con->db);
                 tracker_db_exec_no_reply (db_con, "ANALYZE");
-                tracker_db_end_transaction (db_con);
+                tracker_db_interface_end_transaction (db_con->db);
                 
-                tracker_db_start_transaction (db_con->emails);
+                tracker_db_interface_start_transaction (db_con->emails->db);
                 tracker_db_exec_no_reply (db_con->emails, "ANALYZE");
-                tracker_db_end_transaction (db_con->emails);
+                tracker_db_interface_end_transaction (db_con->emails->db);
                 
                 tracker_log ("Finished optimizing, waiting for new events...");
         }
@@ -1528,7 +1528,9 @@
                           tracker);
 
         /* Start processing */
+	g_print ("oooye!\n");
 	g_mutex_lock (tracker->files_signal_mutex);
+	g_print ("oooye2!\n");
 
         /* Signal state change */
         g_signal_emit_by_name (object, 

Modified: branches/indexer-split/src/trackerd/trackerd.c
==============================================================================
--- branches/indexer-split/src/trackerd/trackerd.c	(original)
+++ branches/indexer-split/src/trackerd/trackerd.c	Mon Apr 21 12:47:52 2008
@@ -840,12 +840,10 @@
 	/* Set thread safe DB connection */
 	tracker_db_thread_init ();
 
-#if 0
-        if (!tracker_db_initialize (tracker->data_dir)) {
+        if (!tracker_db_initialize ()) {
 		tracker_error ("Could not initialize database engine!");
 		return EXIT_FAILURE;
         }
-#endif
 
 	/* FIXME: is this actually necessary? */
 	db_con = tracker_db_connect_cache ();



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