summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-11-05 13:17:43 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-12-05 15:34:30 +0100
commit1869371c37e9fbd9fab65d6b239ba3e34d315460 (patch)
tree19a04044e10b9ff0fbf130f0cea0f47a72dfd1ef /src
parent17cce6a3dcae3a7b212c82427714aa9b79941e58 (diff)
downloadtracker-1869371c37e9fbd9fab65d6b239ba3e34d315460.tar.gz
core: Shuffle root node initialization
Now that we have a tracker_sparql_state_init() function to initialize the TrackerSparqlState, we can fetch the root node of the parser tree there.
Diffstat (limited to 'src')
-rw-r--r--src/libtracker-sparql/core/tracker-sparql.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/libtracker-sparql/core/tracker-sparql.c b/src/libtracker-sparql/core/tracker-sparql.c
index eee01d04a..d20dcaa9c 100644
--- a/src/libtracker-sparql/core/tracker-sparql.c
+++ b/src/libtracker-sparql/core/tracker-sparql.c
@@ -203,7 +203,8 @@ struct _TrackerSparql
G_DEFINE_TYPE (TrackerSparql, tracker_sparql, G_TYPE_OBJECT)
static void
-tracker_sparql_state_init (TrackerSparqlState *state)
+tracker_sparql_state_init (TrackerSparqlState *state,
+ TrackerSparql *sparql)
{
state->cached_bindings = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_object_unref);
@@ -216,6 +217,8 @@ tracker_sparql_state_init (TrackerSparqlState *state)
state->anon_graphs = g_ptr_array_new_with_free_func (g_free);
state->named_graphs = g_ptr_array_new_with_free_func (g_free);
+
+ state->node = tracker_node_tree_get_root (sparql->tree);
}
static void
@@ -9891,12 +9894,10 @@ tracker_sparql_new (TrackerDataManager *manager,
TrackerSparqlState state = { 0 };
GError *internal_error = NULL;
- tracker_sparql_state_init (&state);
-
sparql->tree = tree;
sparql->current_state = &state;
- sparql->current_state->node = tracker_node_tree_get_root (sparql->tree);
+ tracker_sparql_state_init (&state, sparql);
tracker_sparql_init_string_builder (sparql);
if (!_call_rule_func (sparql, NAMED_RULE_Query, &internal_error))
@@ -10032,7 +10033,6 @@ prepare_query (TrackerSparql *sparql,
static void
tracker_sparql_reset_state (TrackerSparql *sparql)
{
- sparql->current_state->node = tracker_node_tree_get_root (sparql->tree);
tracker_sparql_init_string_builder (sparql);
g_clear_object (&sparql->context);
}
@@ -10069,9 +10069,8 @@ tracker_sparql_execute_cursor (TrackerSparql *sparql,
TrackerSparqlState state = { 0 };
gboolean retval;
- tracker_sparql_state_init (&state);
-
sparql->current_state = &state;
+ tracker_sparql_state_init (&state, sparql);
tracker_sparql_reset_state (sparql);
retval = _call_rule_func (sparql, NAMED_RULE_Query, error);
sparql->current_state = NULL;
@@ -10166,9 +10165,8 @@ tracker_sparql_execute_update (TrackerSparql *sparql,
if (blank)
sparql->blank_nodes = g_variant_builder_new (G_VARIANT_TYPE ("aaa{ss}"));
- tracker_sparql_state_init (&state);
sparql->current_state = &state;
- sparql->current_state->node = tracker_node_tree_get_root (sparql->tree);
+ tracker_sparql_state_init (&state, sparql);
sparql->current_state->blank_node_map =
bnode_map ? g_hash_table_ref (bnode_map) : NULL;
tracker_sparql_init_string_builder (sparql);