[tracker/tracker-0.6] Don't insert empty strings for NULL values, it causes unique value disparity



commit c64601d8119db1acc52457d4481fc5cdd8fa9252
Author: Martyn Russell <martyn imendio com>
Date:   Mon May 18 11:02:50 2009 +0100

    Don't insert empty strings for NULL values, it causes unique value disparity
---
 src/libtracker-data/tracker-data-update.c |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 47da58d..c25fa04 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -958,12 +958,20 @@ tracker_data_update_metadata_context_close (TrackerDataUpdateMetadataContext *co
 		
 		g_hash_table_iter_init (&iter, context->data);
 		while (g_hash_table_iter_next (&iter, &key, &value)) {
+			/* We don't insert empty strings for NULLS, we
+			 * simply don't insert the data and accept
+			 * the database default.
+			 */
+			if (!value) {
+				continue;
+			}
+
 			if (first) {
 				g_string_append_printf (keys, "%s", (gchar*) key);
-				g_string_append_printf (values, "'%s'", value ? (gchar*) value : "");
+				g_string_append_printf (values, "'%s'", (gchar*) value);
 			} else {
 				g_string_append_printf (keys, ",%s", (gchar*) key);
-				g_string_append_printf (values, ",'%s'", value ? (gchar*) value : "");
+				g_string_append_printf (values, ",'%s'", (gchar*) value);
 			}
 
 			first = FALSE;
@@ -989,6 +997,14 @@ tracker_data_update_metadata_context_close (TrackerDataUpdateMetadataContext *co
 
 		g_hash_table_iter_init (&iter, context->data);
 		while (g_hash_table_iter_next (&iter, &key, &value)) {
+			/* We don't update empty strings for NULLS, we
+			 * simply don't insert the data and accept
+			 * the database default.
+			 */
+			if (!value) {
+				continue;
+			}
+
 			if (!first) {
 				g_string_append (update_query, ", ");
 			}
@@ -996,7 +1012,7 @@ tracker_data_update_metadata_context_close (TrackerDataUpdateMetadataContext *co
 			g_string_append_printf (update_query,
 						"%s = '%s'",
 						(gchar*) key,
-						value ? (gchar*) value : "");
+						(gchar*) value);
 
 			first = FALSE;
 		}



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