tracker r1400 - in branches/xesam-support: data src/trackerd



Author: pvanhoof
Date: Tue May 13 10:48:56 2008
New Revision: 1400
URL: http://svn.gnome.org/viewvc/tracker?rev=1400&view=rev

Log:
Some bugfixes

Modified:
   branches/xesam-support/data/sqlite-stored-procs.sql
   branches/xesam-support/src/trackerd/tracker-db-sqlite.c
   branches/xesam-support/src/trackerd/tracker-db-sqlite.h
   branches/xesam-support/src/trackerd/tracker-xesam-live-search.c
   branches/xesam-support/src/trackerd/tracker-xesam-query.c
   branches/xesam-support/src/trackerd/tracker-xesam-query.h

Modified: branches/xesam-support/data/sqlite-stored-procs.sql
==============================================================================
--- branches/xesam-support/data/sqlite-stored-procs.sql	(original)
+++ branches/xesam-support/data/sqlite-stored-procs.sql	Tue May 13 10:48:56 2008
@@ -29,7 +29,7 @@
 GetEvents SELECT ID, ServiceID, EventType FROM Events WHERE BeingHandled = 1;
 SetEventsBeingHandled UPDATE Events SET BeingHandled = 1;
 
-GetLiveSearchModifiedIDs SELECT E.ServiceID FROM Events as E, LiveSearches as X WHERE E.ServiceID = X.ServiceID AND X.SearchID = ? AND NOT E.EventType='Create';
+GetLiveSearchDeletedIDs SELECT E.ServiceID FROM Events as E, LiveSearches as X WHERE E.ServiceID = X.ServiceID AND X.SearchID = ? AND E.EventType IS 'Delete';
 GetLiveSearchHitCount SELECT count(*) FROM LiveSearches WHERE SearchID = ?;
 
 GetNewEventID SELECT OptionValue FROM Options WHERE OptionKey = 'EventSequence';
@@ -202,8 +202,7 @@
 GetXesamServiceMappings SELECT TypeName FROM XesamServiceMapping WHERE XesamTypeName = ?;
 GetXesamServiceLookups SELECT DISTINCT TypeName FROM XesamServiceLookup WHERE XesamTypeName = ?;
 
-
 GetXesamMetaDataTypes SELECT MetaName, Parents FROM XesamMetaDataTypes;
 GetXesamMetaDataChildren SELECT Child FROM XesamMetaDataChildren WHERE Parent = ?;
 GetXesamMetaDataMappings SELECT MetaName FROM XesamMetaDataMapping WHERE XesamMetaName = ?;
-GetXesamMetaDataLookups SELECT DISTINCT MetaName FROM XesamMetaDataLookup WHERE XesamMetaName = ?;
\ No newline at end of file
+GetXesamMetaDataLookups SELECT DISTINCT MetaName FROM XesamMetaDataLookup WHERE XesamMetaName = ?;

Modified: branches/xesam-support/src/trackerd/tracker-db-sqlite.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-db-sqlite.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-db-sqlite.c	Tue May 13 10:48:56 2008
@@ -3177,7 +3177,7 @@
 
 
 TrackerDBResultSet* 
-tracker_db_get_live_search_modified_ids (DBConnection *db_con, const gchar *search_id)
+tracker_db_get_live_search_deleted_ids (DBConnection *db_con, const gchar *search_id)
 {
 	TrackerDBResultSet *result;
 
@@ -3185,9 +3185,9 @@
 	g_static_rec_mutex_lock (&events_table_lock);
 
 	/* Uses the Events table */
-	tracker_debug ("GetLiveSearchModifiedIDs");
+	tracker_debug ("GetLiveSearchDeletedIDs");
 
-	result = tracker_exec_proc (db_con->cache, "GetLiveSearchModifiedIDs", search_id, NULL);
+	result = tracker_exec_proc (db_con->cache, "GetLiveSearchDeletedIDs", search_id, NULL);
 
 	g_static_rec_mutex_unlock (&events_table_lock);
 

Modified: branches/xesam-support/src/trackerd/tracker-db-sqlite.h
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-db-sqlite.h	(original)
+++ branches/xesam-support/src/trackerd/tracker-db-sqlite.h	Tue May 13 10:48:56 2008
@@ -349,7 +349,7 @@
 TrackerDBResultSet *tracker_db_get_events                      (DBConnection *db_con);
 void                tracker_db_delete_handled_events           (DBConnection   *db_con, 
                                                                 TrackerDBResultSet *events);
-TrackerDBResultSet *tracker_db_get_live_search_modified_ids    (DBConnection *db_con, 
+TrackerDBResultSet *tracker_db_get_live_search_deleted_ids     (DBConnection *db_con, 
                                                                 const gchar *search_id);
 TrackerDBResultSet *tracker_db_get_live_search_new_ids         (DBConnection *db_con, 
                                                                 const gchar *search_id,

Modified: branches/xesam-support/src/trackerd/tracker-xesam-live-search.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam-live-search.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-xesam-live-search.c	Tue May 13 10:48:56 2008
@@ -74,6 +74,7 @@
 {
 	TrackerXesamLiveSearchPriv *priv = self->priv;
 
+	g_free (priv->query);
 	priv->query = g_strdup (query);
 }
 
@@ -127,8 +128,7 @@
 
 	priv->active = FALSE;
 	priv->closed = FALSE;
-	priv->query = g_strdup ("1=1");
-	
+	priv->query = NULL;
 	priv->sql = g_strdup ("");
 }
 
@@ -229,65 +229,59 @@
 
 	g_object_get (proxy, "db-connection", &db_con, NULL);
 
-	result_set = tracker_db_get_live_search_modified_ids (db_con, 
+	result_set = tracker_db_get_live_search_deleted_ids (db_con, 
 		tracker_xesam_live_search_get_id (self));
 
 	if (!result_set)
 		return;
 
+
+	/** 
+	 * Deleted items:
+	 * SELECT E.ServiceID FROM Events as E, LiveSearches as X 
+	 * WHERE E.ServiceID = X.ServiceID 
+	 * AND X.SearchID = ? 
+	 * AND E.EventType IS 'Delete' 
+	 **/
+
 	while (ls_valid) {
 		GValue ls_value = { 0, };
-		gboolean ev_valid = TRUE;
+		gint ls_i_value;
 
 		_tracker_db_result_set_get_value (result_set, 0, &ls_value);
+		ls_i_value = g_value_get_int (&ls_value);
 
-		while (ev_valid) {
-			GValue ev_value = { 0, };
-			gint ev_i_value;
-
-			_tracker_db_result_set_get_value (result_set, 1, &ev_value);
-
-			ev_i_value = g_value_get_int (&ev_value);
-
-			if (ev_i_value == g_value_get_int (&ls_value)) {
-				GValue ev_type = { 0, };
-				const gchar *str;
-
-				_tracker_db_result_set_get_value (events, 2, &ev_type);
-				str = g_value_get_string (&ev_type);
-
-				if (!strcmp (str, "Update")) {
-					if (m_modified == NULL)
-						m_modified = g_array_new (FALSE, TRUE, sizeof (guint32));
-					g_array_append_val (m_modified, ev_i_value);
-				} else if (!strcmp (str, "Delete")) {
-					if (*removed == NULL)
-						m_removed = g_array_new (FALSE, TRUE, sizeof (guint32));
-					g_array_append_val (m_removed, ev_i_value);
-				}
-
-				g_value_unset (&ev_type);
-			}
-
-			g_value_unset (&ev_value);
-			ev_valid = tracker_db_result_set_iter_next (events);
-		}
+		if (m_removed == NULL)
+			m_removed = g_array_new (FALSE, TRUE, sizeof (guint32));
+		g_array_append_val (m_removed, ls_i_value);
 
-		tracker_db_result_set_rewind (events);
+		g_value_unset (&ls_value);
 
 		ls_valid = tracker_db_result_set_iter_next (result_set);
 	}
 
 	g_object_unref (result_set);
 
+
+
 	ls_valid = TRUE;
 
 	// For ottela to review (add columns and tables)
 
+	/**
+	 * New and Modified items:
+	 * SELECT E.ServiceID, E.EventType, COLUMNS
+	 * FROM XesamLiveSearches as X, Events as E, TABLES
+	 * X.ServiceID = E.ServiceID
+	 * AND X.SearchID = ? "
+	 * AND X.EventType IS 'Create' OR X.EventType IS 'Update'
+	 * AND (QUERY)
+	 **/
+
 	result_set = tracker_db_get_live_search_new_ids (db_con, 
 		tracker_xesam_live_search_get_id (self),
-		"", /* Columns */
-		"", /* Tables */
+		NULL, /* Columns */
+		NULL, /* Tables */
 		tracker_xesam_live_search_get_query (self)); /* Query */
 
 	if (!result_set)
@@ -683,7 +677,7 @@
 }
 
 /**
- * tracker_xesam_live_search_get_query:
+ * tracker_xesam_live_search_parse_query:
  * @self: a #TrackerXesamLiveSearch
  *
  * * API will change *
@@ -699,19 +693,23 @@
 	TrackerXesamLiveSearchPriv *priv = self->priv;	
 	TrackerDBusXesam           *proxy = TRACKER_DBUS_XESAM (tracker_dbus_get_object (TRACKER_TYPE_DBUS_XESAM));
 	DBConnection               *db_con = NULL;
-	GError                     *parse_error;
+	GError                     *parse_error = NULL;
 
 	g_object_get (proxy, "db-connection", &db_con, NULL);
+
 	if (priv->sql)
 		g_free (priv->sql);
-	priv->sql = tracker_xesam_query_to_sql (db_con, priv->query, parse_error);
+
+	priv->sql = tracker_xesam_query_to_sql (db_con, priv->query, &parse_error);
 
 	if (parse_error) {
-		// FIXME Send the actual parse error.
+			gchar *str = g_strdup_printf ("Parse error: %s", 
+				parse_error->message);
 			g_set_error (error, TRACKER_XESAM_ERROR, 
 				     TRACKER_XESAM_ERROR_PARSING_FAILED,
-				     "Parsing failed");
-			g_free (parse_error);
+				     str);
+			g_free (str);
+			g_error_free (parse_error);
 	}
 
 	return priv->sql;

Modified: branches/xesam-support/src/trackerd/tracker-xesam-query.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam-query.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-xesam-query.c	Tue May 13 10:48:56 2008
@@ -1169,11 +1169,12 @@
 
 
 char *
-tracker_xesam_query_to_sql (DBConnection *db_con, const char *query, GError *error)
+tracker_xesam_query_to_sql (DBConnection *db_con, const char *query, GError **error)
 {
 	static     gboolean inited = FALSE;
 	ParserData data;
 	char       *result;
+	char       *table_name;
 
 	g_return_val_if_fail (query != NULL, NULL);
 
@@ -1186,8 +1187,6 @@
 	data.db_con = db_con;
 	data.statement_count = 0;
 
-	char *table_name;
-
 	table_name = "Services";
 
 	data.sql_from = g_string_new ("");
@@ -1212,7 +1211,7 @@
 
 	result = NULL;
 
-	if (!g_markup_parse_context_parse (data.context, query, -1, &error)) {
+	if (!g_markup_parse_context_parse (data.context, query, -1, error)) {
 
 		g_string_free (data.sql_from, TRUE);
 		g_string_free (data.sql_where, TRUE);

Modified: branches/xesam-support/src/trackerd/tracker-xesam-query.h
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam-query.h	(original)
+++ branches/xesam-support/src/trackerd/tracker-xesam-query.h	Tue May 13 10:48:56 2008
@@ -27,6 +27,6 @@
 #include "tracker-db.h"
 
 
-char *	tracker_xesam_query_to_sql (DBConnection *db_con, const char *query, GError *error);
+char *	tracker_xesam_query_to_sql (DBConnection *db_con, const char *query, GError **error);
 
 #endif



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