diff options
author | Sam Thursfield <sam@afuera.me.uk> | 2018-08-03 18:32:36 +0200 |
---|---|---|
committer | Sam Thursfield <sam@afuera.me.uk> | 2018-08-03 18:32:36 +0200 |
commit | 3ffec9d592ace7e68d6a2c5ac21febc246c1015a (patch) | |
tree | 96daed5949649f1a5463d4bd0611447cdf2b067c | |
parent | a0f5afbd10d6bd3d087335dcf85b0ee6f8960421 (diff) | |
parent | a25f186f8012190291766d073a89fed2eee7cefd (diff) | |
download | tracker-3ffec9d592ace7e68d6a2c5ac21febc246c1015a.tar.gz |
Merge branch 'wip/carlosg/resource-deletes'
See https://gitlab.gnome.org/GNOME/tracker/merge_requests/12
-rw-r--r-- | src/libtracker-sparql/tracker-resource.c | 45 |
1 files changed, 17 insertions, 28 deletions
diff --git a/src/libtracker-sparql/tracker-resource.c b/src/libtracker-sparql/tracker-resource.c index 2270900fc..23e4dbab3 100644 --- a/src/libtracker-sparql/tracker-resource.c +++ b/src/libtracker-sparql/tracker-resource.c @@ -1359,7 +1359,7 @@ variable_name_for_property (const char *property) { } static void -generate_sparql_delete_pattern (TrackerResource *resource, +generate_sparql_delete_queries (TrackerResource *resource, GHashTable *overwrite_flags, GenerateSparqlData *data) { @@ -1367,37 +1367,32 @@ generate_sparql_delete_pattern (TrackerResource *resource, GHashTableIter iter; const char *property; const GValue *value; - gboolean had_property; - if (data->graph_id) { - g_string_append_printf (data->string, "GRAPH <%s> {\n", data->graph_id); - } - - g_string_append (data->string, " "); - generate_turtle_uri_value (priv->identifier, data->string, data->namespaces, NULL); - g_string_append (data->string, "\n "); - - had_property = FALSE; g_hash_table_iter_init (&iter, priv->properties); while (g_hash_table_iter_next (&iter, (gpointer *)&property, (gpointer *)&value)) { /* Whether to generate the DELETE is based on whether set_value was ever * called for this property. That's tracked in the overwrite_flags hash table. */ if (g_hash_table_lookup (overwrite_flags, property)) { - if (had_property) { - g_string_append (data->string, " ;\n "); + char *variable_name = variable_name_for_property (property); + + g_string_append (data->string, "DELETE WHERE {\n"); + + if (data->graph_id) { + g_string_append_printf (data->string, "GRAPH <%s> {\n", data->graph_id); } - char *variable_name = variable_name_for_property (property); - g_string_append_printf (data->string, " %s ?%s", property, variable_name); + g_string_append (data->string, " "); + generate_turtle_uri_value (priv->identifier, data->string, data->namespaces, NULL); + g_string_append_printf (data->string, " %s ?%s }", property, variable_name); g_free (variable_name); - had_property = TRUE; - } - } + if (data->graph_id) { + g_string_append (data->string, " }"); + } - if (data->graph_id) { - g_string_append (data->string, " }"); + g_string_append (data->string, "\n"); + } } } @@ -1407,14 +1402,8 @@ generate_sparql_deletes (TrackerResource *resource, { TrackerResourcePrivate *priv = GET_PRIVATE (resource); - if (! is_blank_node (priv->identifier)) { - if (g_hash_table_size (priv->overwrite) > 0) { - g_string_append (data->string, "DELETE {\n"); - generate_sparql_delete_pattern (resource, priv->overwrite, data); - g_string_append (data->string, "\n}\nWHERE {\n"); - generate_sparql_delete_pattern (resource, priv->overwrite, data); - g_string_append (data->string, "\n}\n"); - } + if (! is_blank_node (priv->identifier) && g_hash_table_size (priv->overwrite) > 0) { + generate_sparql_delete_queries (resource, priv->overwrite, data); } /* Now emit any sub-resources. */ |