[tracker/tracker-0.6] Do not use default values for numeric null fields



commit 5544e53d943725ec12870c955162bb06c6608279
Author: Mikael Ottela <mikael ottela ixonos com>
Date:   Thu May 14 08:19:39 2009 +0300

    Do not use default values for numeric null fields
    
    Instead of setting a default value for numeric fields with null content we
    just return an empty string in this case as well.
    
    Fixes NB#115978
---
 src/libtracker-db/tracker-db-dbus.c      |   13 +++++++++----
 src/libtracker-db/tracker-db-interface.c |   24 +++---------------------
 2 files changed, 12 insertions(+), 25 deletions(-)

diff --git a/src/libtracker-db/tracker-db-dbus.c b/src/libtracker-db/tracker-db-dbus.c
index da0e0ea..86f488f 100644
--- a/src/libtracker-db/tracker-db-dbus.c
+++ b/src/libtracker-db/tracker-db-dbus.c
@@ -306,7 +306,7 @@ tracker_dbus_query_result_columns_to_strv (TrackerDBResultSet *result_set,
 			g_value_init (&transform, G_TYPE_STRING);
 			
 			_tracker_db_result_set_get_value (result_set, i, &value);
-			if (g_value_transform (&value, &transform)) {
+			if (G_IS_VALUE (&value) && g_value_transform (&value, &transform)) {
 				if (row_counter == 0) {
 					strv[i] = g_value_dup_string (&transform);
 				} else {
@@ -326,8 +326,11 @@ tracker_dbus_query_result_columns_to_strv (TrackerDBResultSet *result_set,
 					}
 					
 				}
+				g_value_unset (&value);
+			} else {
+				strv[i] = g_strdup ("");
 			}
-			g_value_unset (&value);
+			
 			g_value_unset (&transform);
 		}
 
@@ -448,7 +451,7 @@ tracker_dbus_query_result_to_ptr_array (TrackerDBResultSet *result_set)
 
 			_tracker_db_result_set_get_value (result_set, i, &value);
 
-			if (g_value_transform (&value, &transform)) {
+			if (G_IS_VALUE (&value) && g_value_transform (&value, &transform)) {
 				str = g_value_dup_string (&transform);
 			}
 
@@ -458,7 +461,9 @@ tracker_dbus_query_result_to_ptr_array (TrackerDBResultSet *result_set)
 
 			list = g_slist_prepend (list, (gchar*) str);
 
-			g_value_unset (&value);
+			if (G_IS_VALUE (&value)) {
+				g_value_unset (&value);
+			}
 			g_value_unset (&transform);
 		}
 
diff --git a/src/libtracker-db/tracker-db-interface.c b/src/libtracker-db/tracker-db-interface.c
index 344bf12..0dfdb96 100644
--- a/src/libtracker-db/tracker-db-interface.c
+++ b/src/libtracker-db/tracker-db-interface.c
@@ -550,29 +550,11 @@ _tracker_db_result_set_get_value (TrackerDBResultSet *result_set,
 	priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
 	row = g_ptr_array_index (priv->array, priv->current_row);
 
-	if (priv->col_types[column] != G_TYPE_INVALID) {
+	if (priv->col_types[column] != G_TYPE_INVALID && row && row[column]) {
 		g_value_init (value, priv->col_types[column]);
-		if (row && row[column]) {
-			fill_in_value (value, row[column]);
-		} else {
-			/* Make up some empty value. */
-			switch (G_VALUE_TYPE (value)) {
-			case G_TYPE_INT:
-				g_value_set_int (value, 0);
-				break;
-			case G_TYPE_DOUBLE:
-				g_value_set_double (value, 0.0);
-				break;
-			case G_TYPE_STRING:
-				g_value_set_string (value, "");
-				break;
-			}
-		}
-	} else {
-		/* Make up some empty value */
-		g_value_init (value, G_TYPE_STRING);
-		g_value_set_string (value, "");
+		fill_in_value (value, row[column]);
 	}
+	/* otherwise keep unset */
 }
 
 /* TrackerDBResultSet API */



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