[tracker] tracker-extract: Handle correctly empty insertions



commit 60799ca301f036a212c0bb2e4ee148c83087ddfa
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Aug 4 18:51:32 2015 +0200

    tracker-extract: Handle correctly empty insertions
    
    There may be files for which is valid to say "there's nothing to
    extract here" without resorting to error paths, in that case we
    must insert the dataSource, but skip the empty statements for the
    file.

 src/tracker-extract/tracker-extract-decorator.c |   40 +++++++++++++----------
 1 files changed, 23 insertions(+), 17 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-decorator.c b/src/tracker-extract/tracker-extract-decorator.c
index 4f7f0db..9152e4e 100644
--- a/src/tracker-extract/tracker-extract-decorator.c
+++ b/src/tracker-extract/tracker-extract-decorator.c
@@ -161,25 +161,31 @@ decorator_save_info (TrackerSparqlBuilder    *sparql,
        tracker_sparql_builder_object_iri (sparql,
                                           tracker_decorator_get_data_source (TRACKER_DECORATOR (decorator)));
 
-       /* Add extracted metadata */
-       str = g_strdup_printf ("<%s>", urn);
-       tracker_sparql_builder_append (sparql, str);
-       g_free (str);
-
        builder = tracker_extract_info_get_metadata_builder (info);
-       result = tracker_sparql_builder_get_result (builder);
-       tracker_sparql_builder_append (sparql, result);
 
-       /* Close graph and insert statement, insert where clause */
-       tracker_sparql_builder_graph_close (sparql);
-        tracker_sparql_builder_insert_close (sparql);
+       if (tracker_sparql_builder_get_length (builder) > 0) {
+               /* Add extracted metadata */
+               str = g_strdup_printf ("<%s>", urn);
+               tracker_sparql_builder_append (sparql, str);
+               g_free (str);
+
+               result = tracker_sparql_builder_get_result (builder);
+               tracker_sparql_builder_append (sparql, result);
 
-       where = tracker_extract_info_get_where_clause (info);
+               /* Close graph and insert statement, insert where clause */
+               tracker_sparql_builder_graph_close (sparql);
+               tracker_sparql_builder_insert_close (sparql);
 
-       if (where && *where) {
-               tracker_sparql_builder_where_open (sparql);
-               tracker_sparql_builder_append (sparql, where);
-               tracker_sparql_builder_where_close (sparql);
+               where = tracker_extract_info_get_where_clause (info);
+
+               if (where && *where) {
+                       tracker_sparql_builder_where_open (sparql);
+                       tracker_sparql_builder_append (sparql, where);
+                       tracker_sparql_builder_where_close (sparql);
+               }
+       } else {
+               tracker_sparql_builder_graph_close (sparql);
+               tracker_sparql_builder_insert_close (sparql);
        }
 
        /* Prepend/append pre/postupdate chunks */



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