summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2022-05-06 09:54:10 -0400
committerCarlos Garnacho <carlosg@gnome.org>2022-05-30 15:22:36 +0200
commitfdbc8d6cf5f1f954807fc51466be67219ed23813 (patch)
tree02b41cb2c969328e1fff60400cd0489ebc05d559
parent27c3137d733b4511fe31f00a639c4d1389ac465c (diff)
downloadtracker-fdbc8d6cf5f1f954807fc51466be67219ed23813.tar.gz
libtracker-data: Ensure blank node row ids are integer typed
Since commit 6cf3168302350f3fd3ef7f8bf79022950563300e tracker sometimes returns an unqualified row id to applications that are asking for a fully qualfied blank node urn. This is because sometimes it generates URN with a text type instead of an integer type, and so `SparqlPrintIRI` fails to recognize it as a blank node identifier. The result is that gnome-photos fails to match up album collections internally between different queries, because sometimes tracker returns the fully qualified urn and sometimes it returns the bare row id. This commit address the problem by introducing a cast in the query that is returning the row id as text instead of as an integer. Fix suggested by Carlos Garnacho. Closes https://gitlab.gnome.org/GNOME/tracker/-/issues/363 (cherry-picked from commit 2a7509055e36d1d871e7da337d95f729e7d8c58d)
-rw-r--r--src/libtracker-data/tracker-sparql.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 98cd0711e..7559e5640 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -589,11 +589,11 @@ _append_literal_sql (TrackerSparql *sparql,
_append_string (sparql, "), ");
if ((flags & TRACKER_DB_MANAGER_ANONYMOUS_BNODES) == 0) {
- _append_string (sparql, "NULLIF(REPLACE(");
+ _append_string (sparql, "CAST(NULLIF(REPLACE(");
_append_literal_binding (sparql, binding);
_append_string (sparql, ", 'urn:bnode:', ''), ");
_append_literal_binding (sparql, binding);
- _append_string (sparql, "), ");
+ _append_string (sparql, ") AS INTEGER), ");
}
_append_string (sparql, "0) ");