Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Update
tracker
tracker-bgo766505-variable-mapping.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File tracker-bgo766505-variable-mapping.patch of Package tracker
From 4e5cc9b8bc38d110fc6af5d59e133c768b80ba6b Mon Sep 17 00:00:00 2001 From: Carlos Garnacho <carlosg@gnome.org> Date: Sun, 29 May 2016 21:19:43 +0200 Subject: [PATCH] libtracker-data: Refine BIND() variable mapping The implementation of BIND() introduced an special case in the way we construct the result columns in selects (Handled in commit 64b54a7784). This special case however turns out wrong when the resolved variable is used both in and outside the BIND() statement. So, admit the nature of this hack and special case it altogether, the check was too iffy when there is really one situation where this makes sense. https://bugzilla.gnome.org/show_bug.cgi?id=766505 --- src/libtracker-data/tracker-sparql-expression.vala | 2 +- src/libtracker-data/tracker-sparql-pattern.vala | 2 ++ src/libtracker-data/tracker-sparql-query.vala | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libtracker-data/tracker-sparql-expression.vala b/src/libtracker-data/tracker-sparql-expression.vala index 85dd59468..aca536d9d 100644 --- a/src/libtracker-data/tracker-sparql-expression.vala +++ b/src/libtracker-data/tracker-sparql-expression.vala @@ -1145,7 +1145,7 @@ class Tracker.Sparql.Expression : Object { string variable_name = get_last_string ().substring (1); var variable = context.get_variable (variable_name); - if (context == variable.origin_context && variable.binding != null) { + if (context.in_bind && variable.binding != null) { sql.append (variable.binding.sql_expression); } else { sql.append (variable.sql_expression); diff --git a/src/libtracker-data/tracker-sparql-pattern.vala b/src/libtracker-data/tracker-sparql-pattern.vala index 73740b7c2..e6a209dc3 100644 --- a/src/libtracker-data/tracker-sparql-pattern.vala +++ b/src/libtracker-data/tracker-sparql-pattern.vala @@ -1108,7 +1108,9 @@ class Tracker.Sparql.Pattern : Object { expect (SparqlTokenType.OPEN_PARENS); + context.in_bind = true; expression.translate_expression (bind_sql); + context.in_bind = false; binding.sql_expression = bind_sql.str; expect (SparqlTokenType.AS); diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala index 1b0842fdf..e2166fc71 100644 --- a/src/libtracker-data/tracker-sparql-query.vala +++ b/src/libtracker-data/tracker-sparql-query.vala @@ -122,6 +122,7 @@ namespace Tracker.Sparql { public HashTable<Variable,PredicateVariable> predicate_variable_map; public bool scalar_subquery; + public bool in_bind; public Context (Query query, Context? parent_context = null) { this.query = query; -- 2.20.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor