[tracker/wip/carlosg/joining-services: 5/6] libtracker-data: Avoid repeated variables in remote service select clause
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/joining-services: 5/6] libtracker-data: Avoid repeated variables in remote service select clause
- Date: Wed, 13 May 2020 11:45:15 +0000 (UTC)
commit 7f31a0a8eb4f958f7b46f1bfadb4520d17168900
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed May 13 12:15:57 2020 +0200
libtracker-data: Avoid repeated variables in remote service select clause
We go through the variables used within a ServiceGraphPattern in order
to build the SELECT clause, but don't check that those may be used multiple
times, this results in multiple columns having the same content/name and
corresponding waste of bandwidth.
Optimize those out so each variable is only included once in the SELECT
clause, and give use to this "variables" variable that was meant for it,
but ignored and leaked instead.
src/libtracker-data/tracker-sparql.c | 4 ++++
1 file changed, 4 insertions(+)
---
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 601ad3b71..6437b11d8 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -4670,6 +4670,9 @@ translate_ServiceGraphPattern (TrackerSparql *sparql,
var_str = _extract_node_string (node, sparql);
var = _extract_node_variable (node, sparql);
+ if (g_list_find (variables, var))
+ continue;
+
/* Variable was used before in the graph pattern, preserve
* for later so we join on it properly.
*/
@@ -4692,6 +4695,7 @@ translate_ServiceGraphPattern (TrackerSparql *sparql,
pattern_str = g_strndup (&sparql->sparql[pattern_start], pattern_end - pattern_start);
escaped_str = _escape_sql_string (pattern_str, '"');
g_string_append (service_sparql, escaped_str);
+ g_list_free (variables);
g_free (pattern_str);
g_free (escaped_str);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]