[tracker/wip/carlosg/joining-services: 25/26] 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: 25/26] libtracker-data: Avoid repeated variables in remote service select clause
- Date: Wed, 13 May 2020 12:25:01 +0000 (UTC)
commit 1377cab987d3968bd30d120004c9b9403b319892
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 010f750f6..20d92232f 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -4698,6 +4698,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.
*/
@@ -4720,6 +4723,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]