[tracker/sam/tracker-resource-delete-nested-resources: 231/231] libtracker-sparql: Rearrange some tracker-resource.c code



commit bf0f77621b7397aa90a4fb9a1c882f096e8475d8
Author: Sam Thursfield <sam afuera me uk>
Date:   Thu Oct 3 00:07:47 2019 +0200

    libtracker-sparql: Rearrange some tracker-resource.c code
    
    This rearranges tracker-resource.c generate_sparql_insert_pattern() to
    check the done list, same as what we now do in generate_sparql_deletes().
    
    Functionality should not change.

 src/libtracker-sparql/tracker-resource.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-sparql/tracker-resource.c b/src/libtracker-sparql/tracker-resource.c
index 4baf70667..17ad34f70 100644
--- a/src/libtracker-sparql/tracker-resource.c
+++ b/src/libtracker-sparql/tracker-resource.c
@@ -1352,10 +1352,7 @@ generate_sparql_relation_inserts_foreach (gpointer key,
                                      data->namespaces))
                        return;
 
-               if (g_list_find_resource (data->done_list, relation) == NULL) {
-                       data->done_list = g_list_prepend (data->done_list, relation);
-                       generate_sparql_insert_pattern (relation, data);
-               }
+               generate_sparql_insert_pattern (relation, data);
        } else if (G_VALUE_HOLDS (value, G_TYPE_PTR_ARRAY)) {
                GPtrArray *array = g_value_get_boxed (value);
                const GValue *array_value;
@@ -1375,10 +1372,6 @@ generate_sparql_relation_inserts_foreach (gpointer key,
                                              data->namespaces))
                                continue;
 
-                       if (g_list_find_resource (data->done_list, relation) != NULL)
-                               continue;
-
-                       data->done_list = g_list_prepend (data->done_list, relation);
                        generate_sparql_insert_pattern (relation, data);
                }
        }
@@ -1460,6 +1453,12 @@ generate_sparql_insert_pattern (TrackerResource    *resource,
        const GValue *value;
        gboolean had_property = FALSE;
 
+       if (g_list_find_resource (data->done_list, resource) == NULL)
+               /* We already processed this resource. */
+               return;
+
+       data->done_list = g_list_prepend (data->done_list, resource);
+
        /* First, emit any sub-resources. */
        g_hash_table_foreach (priv->properties, generate_sparql_relation_inserts_foreach, data);
 
@@ -1551,7 +1550,7 @@ tracker_resource_print_sparql_update (TrackerResource         *resource,
        generate_sparql_deletes (resource, &context);
 
        g_list_free (context.done_list);
-       context.done_list = g_list_prepend (NULL, resource);
+       context.done_list = NULL;
 
        /* Finally insert the data */
        g_string_append (context.string, "INSERT DATA {\n");


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