tracker r1950 - in branches/indexer-split: . src/libtracker-db src/trackerd



Author: pvanhoof
Date: Mon Jul 28 11:37:58 2008
New Revision: 1950
URL: http://svn.gnome.org/viewvc/tracker?rev=1950&view=rev

Log:
2008-07-28  Philip Van Hoof  <pvanhoof gnome org>

        * src/trackerd/tracker-metadata.c:
        * src/libtracker-db/tracker-db-dbus.h:
        * src/libtracker-db/tracker-db-dbus.c:

        Make tracker_metadata_get return the columns as a GStrv, not the rows.
        This patch fixed tracker-search-tool's crash



Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/libtracker-db/tracker-db-dbus.c
   branches/indexer-split/src/libtracker-db/tracker-db-dbus.h
   branches/indexer-split/src/trackerd/tracker-metadata.c

Modified: branches/indexer-split/src/libtracker-db/tracker-db-dbus.c
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-dbus.c	(original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-dbus.c	Mon Jul 28 11:37:58 2008
@@ -72,6 +72,59 @@
 	return strv;
 }
 
+
+
+gchar **
+tracker_dbus_query_result_columns_to_strv (TrackerDBResultSet *result_set, 
+					   gint offset_column,
+					   gint until_column,
+					   gboolean rewind)
+{
+	gchar **strv = NULL;
+	gint    i = 0;
+	gint    columns;
+
+	if (result_set) {
+		columns = tracker_db_result_set_get_n_columns (result_set);
+		if (rewind) {
+			 /* Make sure we rewind before iterating the result set */
+			tracker_db_result_set_rewind (result_set);
+		}
+	}
+
+	if (!result_set || offset_column > columns) {
+		strv = g_new (gchar*, 1);
+		strv[0] = NULL;
+		return strv;
+	} else if (offset_column == -1)
+		offset_column = 0;
+
+	if (until_column == -1)
+		until_column = columns;
+
+	strv = g_new (gchar*, until_column + 1);
+
+
+	for (i = offset_column ; i < until_column; i++) {
+		GValue value = {0, };
+		GValue  transform = {0, };
+
+		g_value_init (&transform, G_TYPE_STRING);
+
+		_tracker_db_result_set_get_value (result_set, i, &value);
+		if (g_value_transform (&value, &transform)) {
+			strv[i] = g_value_dup_string (&transform);
+		}
+		g_value_unset (&value);
+		g_value_unset (&transform);
+	}
+
+	strv[i] = NULL;
+
+	return strv;
+}
+
+
 GHashTable *
 tracker_dbus_query_result_to_hash_table (TrackerDBResultSet *result_set)
 {

Modified: branches/indexer-split/src/libtracker-db/tracker-db-dbus.h
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-dbus.h	(original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-dbus.h	Mon Jul 28 11:37:58 2008
@@ -28,9 +28,13 @@
 
 #include "tracker-db-interface.h"
 
-gchar **    tracker_dbus_query_result_to_strv       (TrackerDBResultSet *result_set,
-						     gint                column,
-						     gint               *count);
+gchar **    tracker_dbus_query_result_to_strv	     (TrackerDBResultSet *result_set,
+						      gint                column,
+						      gint               *count);
+gchar **    tracker_dbus_query_result_columns_to_strv (TrackerDBResultSet *result_set, 
+						       gint offset_column,
+						       gint until_column,
+						       gboolean rewind);
 GHashTable *tracker_dbus_query_result_to_hash_table (TrackerDBResultSet *result_set);
 GPtrArray * tracker_dbus_query_result_to_ptr_array  (TrackerDBResultSet *result_set);
 

Modified: branches/indexer-split/src/trackerd/tracker-metadata.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-metadata.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-metadata.c	Mon Jul 28 11:37:58 2008
@@ -192,7 +192,7 @@
 	g_debug (query);
 
 	result_set = tracker_db_interface_execute_query (iface, NULL, query);
-	values = tracker_dbus_query_result_to_strv (result_set, 0, NULL);
+	values = tracker_dbus_query_result_columns_to_strv (result_set, -1, -1, TRUE);
 	g_free (query);
 
 	if (result_set) {



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