diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2022-11-13 15:12:06 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-12-05 15:34:30 +0100 |
commit | 5d04f6a4d9d1078919c699084ba05b7d0b4b25ed (patch) | |
tree | e22caaef30e880616fe761ec45e856f6e50f0f7d /src | |
parent | 684d0f1639191737ead2c693b3933edf5b1ad4f0 (diff) | |
download | tracker-5d04f6a4d9d1078919c699084ba05b7d0b4b25ed.tar.gz |
core: Do not process early the SPARQL query on readonly queries
We do that, but at the same time we postpone the resulting error
until tracker_sparql_execute_cursor(), we can just rely on the paths
that are already there for possibly regenerating the SQL string out
of the SPARQL string.
Diffstat (limited to 'src')
-rw-r--r-- | src/libtracker-sparql/core/tracker-sparql.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/src/libtracker-sparql/core/tracker-sparql.c b/src/libtracker-sparql/core/tracker-sparql.c index 2358edff5..b6a912c2a 100644 --- a/src/libtracker-sparql/core/tracker-sparql.c +++ b/src/libtracker-sparql/core/tracker-sparql.c @@ -9890,7 +9890,6 @@ TrackerSparql* tracker_sparql_new (TrackerDataManager *manager, const gchar *query) { - TrackerNodeTree *tree; TrackerSparql *sparql; g_return_val_if_fail (TRACKER_IS_DATA_MANAGER (manager), NULL); @@ -9899,32 +9898,14 @@ tracker_sparql_new (TrackerDataManager *manager, sparql = g_object_new (TRACKER_TYPE_SPARQL, NULL); sparql->query_type = TRACKER_SPARQL_QUERY_SELECT; sparql->data_manager = g_object_ref (manager); - sparql->generation = tracker_data_manager_get_generation (sparql->data_manager); if (strcasestr (query, "\\u")) sparql->sparql = tracker_unescape_unichars (query, -1); else sparql->sparql = g_strdup (query); - tree = tracker_sparql_parse_query (sparql->sparql, -1, NULL, - &sparql->parser_error); - if (tree) { - TrackerSparqlState state = { 0 }; - GError *internal_error = NULL; - - sparql->tree = tree; - - sparql->current_state = &state; - tracker_sparql_state_init (&state, sparql); - - if (!_call_rule_func (sparql, NAMED_RULE_Query, &internal_error)) - g_propagate_error (&sparql->parser_error, internal_error); - - sparql->sql_string = tracker_string_builder_to_string (state.result); - sparql->current_state = NULL; - - tracker_sparql_state_clear (&state); - } + sparql->tree = tracker_sparql_parse_query (sparql->sparql, -1, NULL, + &sparql->parser_error); return sparql; } |