summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-11-26 12:03:52 +0100
committerCarlos Garnacho <carlosg@gnome.org>2020-11-27 00:14:06 +0100
commitdddb0c97d9b102264e54ac65aedf89b0f11daed6 (patch)
tree3273ac6ec7f6682be9f7c1a8a73d8de04c10b72e
parentca184133503eb8361d8ef5e1161cd999b87fd712 (diff)
downloadtracker-dddb0c97d9b102264e54ac65aedf89b0f11daed6.tar.gz
libtracker-data: Add blank node map argument to update parser
We may want to specify one externally at the time of executing it.
-rw-r--r--src/libtracker-data/tracker-data-update.c2
-rw-r--r--src/libtracker-data/tracker-sparql.c3
-rw-r--r--src/libtracker-data/tracker-sparql.h3
3 files changed, 6 insertions, 2 deletions
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 3ce1b7897..8bced383b 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -2637,7 +2637,7 @@ update_sparql (TrackerData *data,
}
sparql_query = tracker_sparql_new_update (data->manager, update);
- blank_nodes = tracker_sparql_execute_update (sparql_query, blank, &actual_error);
+ blank_nodes = tracker_sparql_execute_update (sparql_query, blank, NULL, &actual_error);
g_object_unref (sparql_query);
if (actual_error) {
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index cde68ab73..45caa02df 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -9569,6 +9569,7 @@ tracker_sparql_new_update (TrackerDataManager *manager,
GVariant *
tracker_sparql_execute_update (TrackerSparql *sparql,
gboolean blank,
+ GHashTable *bnode_map,
GError **error)
{
TrackerSparqlState state = { 0 };
@@ -9584,6 +9585,8 @@ tracker_sparql_execute_update (TrackerSparql *sparql,
sparql->current_state = &state;
sparql->current_state->node = tracker_node_tree_get_root (sparql->tree);
+ sparql->current_state->blank_node_map =
+ bnode_map ? g_hash_table_ref (bnode_map) : NULL;
tracker_sparql_init_string_builder (sparql);
retval = _call_rule_func (sparql, NAMED_RULE_Update, error);
sparql->current_state = NULL;
diff --git a/src/libtracker-data/tracker-sparql.h b/src/libtracker-data/tracker-sparql.h
index 57651de1a..74297bd0a 100644
--- a/src/libtracker-data/tracker-sparql.h
+++ b/src/libtracker-data/tracker-sparql.h
@@ -40,9 +40,10 @@ TrackerSparqlCursor * tracker_sparql_execute_cursor (TrackerSparql *sparql,
GError **error);
TrackerSparql * tracker_sparql_new_update (TrackerDataManager *manager,
- const gchar *query);
+ const gchar *query);
GVariant * tracker_sparql_execute_update (TrackerSparql *sparql,
gboolean blank,
+ GHashTable *bnode_map,
GError **error);
GBytes * tracker_sparql_make_langstring (const gchar *str,