[tracker] libtracker-data: Fix transaction handling for unknown blank nodes



commit fdc7dd0adcbfd92cce568b8dd695b6b66c398efa
Author: Jürg Billeter <j bitron ch>
Date:   Fri May 22 13:01:34 2009 +0200

    libtracker-data: Fix transaction handling for unknown blank nodes
    
    This does not properly fix the handling of blank nodes as objects yet,
    however, it should work correctly in practically all situations now and
    especially fix database locking.
---
 src/libtracker-data/tracker-data-update.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 5cbdc35..34e33c3 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -897,16 +897,22 @@ tracker_data_insert_statement (const gchar            *subject,
 		}
 
 		blank_uri = g_hash_table_lookup (blank_buffer.table, object);
-		g_return_if_fail (blank_uri != NULL);
 
-		/* now insert statement referring to blank node */
-		tracker_data_insert_statement (subject, predicate, blank_uri);
+		if (blank_uri != NULL) {
+			/* now insert statement referring to blank node */
+			tracker_data_insert_statement (subject, predicate, blank_uri);
 
-		g_hash_table_remove (blank_buffer.table, object);
+			g_hash_table_remove (blank_buffer.table, object);
 
-		tracker_data_commit_transaction ();
+			tracker_data_commit_transaction ();
 
-		return;
+			return;
+		} else {
+			/* TODO: to fix this properly, we need to split
+			   tracker_data_insert_statement into two functions,
+			   one for uri objects and one for literal objects */
+			g_warning ("Blank node '%s' not found", object);
+		}
 	}
 
 	if (g_str_has_prefix (subject, ":")) {



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