summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-11-13 15:12:06 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-12-05 15:34:30 +0100
commit5d04f6a4d9d1078919c699084ba05b7d0b4b25ed (patch)
treee22caaef30e880616fe761ec45e856f6e50f0f7d /src
parent684d0f1639191737ead2c693b3933edf5b1ad4f0 (diff)
downloadtracker-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.c23
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;
}