Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tracker-miners for openSUSE:Factory checked in at 2022-08-10 17:13:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tracker-miners (Old) and /work/SRC/openSUSE:Factory/.tracker-miners.new.1521 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tracker-miners" Wed Aug 10 17:13:03 2022 rev:39 rq:994107 version:3.3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/tracker-miners/tracker-miners.changes 2022-06-09 14:09:51.724372733 +0200 +++ /work/SRC/openSUSE:Factory/.tracker-miners.new.1521/tracker-miners.changes 2022-08-10 17:13:32.449745707 +0200 @@ -1,0 +2,7 @@ +Mon Aug 8 09:19:56 UTC 2022 - Dominique Leuenberger <[email protected]> + +- Add 401.patch: Specify graphs in "tracker3 search" queries; + resolves tracker search listing files multiple times + (boo#1200403 glgo#GNOME/tracker-miners#229). + +------------------------------------------------------------------- New: ---- 401.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tracker-miners.spec ++++++ --- /var/tmp/diff_new_pack.lBvouF/_old 2022-08-10 17:13:33.581748662 +0200 +++ /var/tmp/diff_new_pack.lBvouF/_new 2022-08-10 17:13:33.585748672 +0200 @@ -25,6 +25,8 @@ URL: https://wiki.gnome.org/Projects/Tracker Source0: https://download.gnome.org/sources/tracker-miners/3.3/%{name}-%{version}.tar.xz +# PATCH-FIX-UPSTREAM 401.patch boo#1200403 glgo#GNOME/tracker-miners#229 -- Specify graphs in "tracker3 search" queries +Patch0: https://gitlab.gnome.org/GNOME/tracker-miners/-/merge_requests/401.patch ### NOTE: Keep please SLE-only patches at bottom (starting on 1000). # PATCH-FIX-SLE tracker-miners-drop-syscalls-in-seccomp.patch bsc#1192567 [email protected] -- Revert some syscalls in seccomp since Leap and SLE do not have them Patch1000: tracker-miners-drop-syscalls-in-seccomp.patch @@ -96,7 +98,7 @@ %prep %setup -q - +%patch0 -p1 # SLE and Leap only patches start at 1000 %if 0%{?sle_version} %patch1000 -p1 ++++++ 401.patch ++++++ >From 4371c50f2d97affe29526009badf31bcd072c968 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho <[email protected]> Date: Sat, 6 Aug 2022 23:56:43 +0200 Subject: [PATCH] cli: Specify graphs in "tracker3 search" queries Since the queries did not specify the graph, there is some path explosion due to the nie:dataSource being in multiple graphs, so all combinations are shown and this is seen as duplicates in the result lists. Specify the graphs in all "tracker3 search" queries, so these redundant object paths are trimmed, and we show unique results. This also results in a speed up of the queries. Closes: https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/229 --- src/tracker/tracker-search.c | 321 ++++++++++++++++++++++++----------- 1 file changed, 219 insertions(+), 102 deletions(-) diff --git a/src/tracker/tracker-search.c b/src/tracker/tracker-search.c index c85f8c7d9..4e4ecf493 100644 --- a/src/tracker/tracker-search.c +++ b/src/tracker/tracker-search.c @@ -309,17 +309,22 @@ get_document_files (TrackerSparqlConnection *connection, else limit_str = g_strdup_printf (" "); - show_all_str = show_all ? "" : "?document nie:isStoredAs/nie:dataSource/tracker:available true ."; + show_all_str = show_all ? "" : "?u nie:dataSource/tracker:available true ."; fts = get_fts_string (search_terms, use_or_operator); if (fts) { - query = g_strdup_printf ("SELECT ?document nie:isStoredAs(?document) fts:snippet(?document, \"%s\", \"%s\") " + query = g_strdup_printf ("SELECT ?document ?u fts:snippet(?document, \"%s\", \"%s\") " "WHERE { " - " ?document a nfo:Document ;" - " fts:match \"%s\" ." - " %s" + " GRAPH tracker:Documents {" + " ?document a nfo:Document ;" + " nie:isStoredAs ?u ;" + " fts:match \"%s\" ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?document)) " + "ORDER BY ASC(?u) " "OFFSET %d " "%s", disable_color ? "" : SNIPPET_BEGIN, @@ -329,12 +334,17 @@ get_document_files (TrackerSparqlConnection *connection, search_offset, limit_str); } else { - query = g_strdup_printf ("SELECT ?document nie:isStoredAs(?document) " + query = g_strdup_printf ("SELECT ?document ?u " "WHERE { " - " ?document a nfo:Document ." - " %s" + " GRAPH tracker:Documents {" + " ?document a nfo:Document ;" + " nie:isStoredAs ?u ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?document)) " + "ORDER BY ASC(?u) " "OFFSET %d " "%s", show_all_str, @@ -370,17 +380,22 @@ get_video_files (TrackerSparqlConnection *connection, else limit_str = g_strdup_printf (" "); - show_all_str = show_all ? "" : "?video nie:isStoredAs/nie:dataSource/tracker:available true . "; + show_all_str = show_all ? "" : "?u nie:dataSource/tracker:available true . "; fts = get_fts_string (search_terms, use_or_operator); if (fts) { - query = g_strdup_printf ("SELECT ?video nie:isStoredAs(?video) fts:snippet(?video, \"%s\", \"%s\") " + query = g_strdup_printf ("SELECT ?video ?u fts:snippet(?video, \"%s\", \"%s\") " "WHERE { " - " ?video a nfo:Video ;" - " fts:match \"%s\" ." - " %s" + " GRAPH tracker:Video {" + " ?video a nfo:Video ;" + " nie:isStoredAs ?u ;" + " fts:match \"%s\" ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?video)) " + "ORDER BY ASC(?u) " "OFFSET %d " "%s", disable_color ? "" : SNIPPET_BEGIN, @@ -390,12 +405,17 @@ get_video_files (TrackerSparqlConnection *connection, search_offset, limit_str); } else { - query = g_strdup_printf ("SELECT ?video nie:isStoredAs(?video) " + query = g_strdup_printf ("SELECT ?video ?u " "WHERE { " - " ?video a nfo:Video ." - " %s" + " GRAPH tracker:Video {" + " ?video a nfo:Video ;" + " nie:isStoredAs ?u ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?video)) " + "ORDER BY ASC(?u) " "OFFSET %d " "%s", show_all_str, @@ -431,17 +451,22 @@ get_image_files (TrackerSparqlConnection *connection, else limit_str = g_strdup_printf (" "); - show_all_str = show_all ? "" : "?image nie:isStoredAs/nie:dataSource/tracker:available true . "; + show_all_str = show_all ? "" : "?u nie:dataSource/tracker:available true . "; fts = get_fts_string (search_terms, use_or_operator); if (fts) { - query = g_strdup_printf ("SELECT ?image nie:isStoredAs(?image) fts:snippet(?image, \"%s\", \"%s\") " + query = g_strdup_printf ("SELECT ?image ?u fts:snippet(?image, \"%s\", \"%s\") " "WHERE { " - " ?image a nfo:Image ;" - " fts:match \"%s\" ." - " %s" - "} " - "ORDER BY ASC(nie:isStoredAs(?image)) " + " GRAPH tracker:Pictures {" + " ?image a nfo:Image ;" + " nie:isStoredAs ?u ;" + " fts:match \"%s\" ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" + "}" + "ORDER BY ASC(?u) " "OFFSET %d " "%s", disable_color ? "" : SNIPPET_BEGIN, @@ -451,12 +476,17 @@ get_image_files (TrackerSparqlConnection *connection, search_offset, limit_str); } else { - query = g_strdup_printf ("SELECT ?image nie:isStoredAs(?image) " + query = g_strdup_printf ("SELECT ?image ?u " "WHERE { " - " ?image a nfo:Image ." - " %s" - "} " - "ORDER BY ASC(nie:isStoredAs(?image)) " + " GRAPH tracker:Pictures {" + " ?image a nfo:Image ;" + " nie:isStoredAs ?u ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" + "}" + "ORDER BY ASC(?u) " "OFFSET %d " "%s", show_all_str, @@ -492,17 +522,22 @@ get_music_files (TrackerSparqlConnection *connection, else limit_str = g_strdup_printf (" "); - show_all_str = show_all ? "" : "?song nie:isStoredAs/nie:dataSource/tracker:available true . "; + show_all_str = show_all ? "" : "?u nie:dataSource/tracker:available true . "; fts = get_fts_string (search_terms, use_or_operator); if (fts) { - query = g_strdup_printf ("SELECT ?song nie:isStoredAs(?song) fts:snippet(?song, \"%s\", \"%s\")" + query = g_strdup_printf ("SELECT ?song ?u fts:snippet(?song, \"%s\", \"%s\")" "WHERE { " - " ?song a nmm:MusicPiece ;" - " fts:match \"%s\" ." - " %s" + " GRAPH tracker:Audio {" + " ?song a nmm:MusicPiece ;" + " nie:isStoredAs ?u ;" + " fts:match \"%s\" ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?song)) " + "ORDER BY ASC(?u) " "OFFSET %d " "%s", disable_color ? "" : SNIPPET_BEGIN, @@ -512,12 +547,17 @@ get_music_files (TrackerSparqlConnection *connection, search_offset, limit_str); } else { - query = g_strdup_printf ("SELECT ?song nie:isStoredAs(?song) " + query = g_strdup_printf ("SELECT ?song ?u " "WHERE { " - " ?song a nmm:MusicPiece ." - " %s" + " GRAPH tracker:Audio {" + " ?song a nmm:MusicPiece ;" + " nie:isStoredAs ?u ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?song)) " + "ORDER BY ASC(?u) " "OFFSET %d " "%s", show_all_str, @@ -557,9 +597,11 @@ get_music_artists (TrackerSparqlConnection *connection, if (fts) { query = g_strdup_printf ("SELECT ?artist ?title " "WHERE {" - " ?artist a nmm:Artist ;" - " nmm:artistName ?title ;" - " fts:match \"%s\" . " + " GRAPH tracker:Audio {" + " ?artist a nmm:Artist ;" + " nmm:artistName ?title ;" + " fts:match \"%s\" . " + " }" "} " "ORDER BY ASC(?title) " "OFFSET %d " @@ -570,8 +612,10 @@ get_music_artists (TrackerSparqlConnection *connection, } else { query = g_strdup_printf ("SELECT ?artist ?title " "WHERE {" - " ?artist a nmm:Artist ;" - " nmm:artistName ?title . " + " GRAPH tracker:Audio {" + " ?artist a nmm:Artist ;" + " nmm:artistName ?title . " + " }" "} " "ORDER BY ASC(?title) " "OFFSET %d " @@ -651,8 +695,10 @@ get_music_albums (TrackerSparqlConnection *connection, if (fts) { query = g_strdup_printf ("SELECT ?album nie:title(?album) " "WHERE {" - " ?album a nmm:MusicAlbum ;" - " fts:match \"%s\" ." + " GRAPH tracker:Audio {" + " ?album a nmm:MusicAlbum ;" + " fts:match \"%s\" ." + " }" "} " "ORDER BY ASC(nie:title(?album)) " "OFFSET %d " @@ -663,7 +709,9 @@ get_music_albums (TrackerSparqlConnection *connection, } else { query = g_strdup_printf ("SELECT ?album nie:title(?album) " "WHERE {" - " ?album a nmm:MusicAlbum ." + " GRAPH tracker:Audio {" + " ?album a nmm:MusicAlbum ." + " }" "} " "ORDER BY ASC(nie:title(?album)) " "OFFSET %d " @@ -828,8 +876,10 @@ get_software (TrackerSparqlConnection *connection, if (fts) { query = g_strdup_printf ("SELECT ?soft nie:title(?soft) fts:snippet(?soft, \"%s\", \"%s\") " "WHERE {" - " ?soft a nfo:Software ;" - " fts:match \"%s\" . " + " GRAPH tracker:Software {" + " ?soft a nfo:Software ;" + " fts:match \"%s\" . " + " }" "} " "ORDER BY ASC(nie:title(?soft)) " "OFFSET %d " @@ -915,8 +965,10 @@ get_software_categories (TrackerSparqlConnection *connection, if (fts) { query = g_strdup_printf ("SELECT ?cat nie:title(?cat) " "WHERE {" - " ?cat a nfo:SoftwareCategory ;" - " fts:match \"%s\" . " + " GRAPH tracker:Software {" + " ?cat a nfo:SoftwareCategory ;" + " fts:match \"%s\" . " + " }" "} " "ORDER BY ASC(nie:title(?cat)) " "OFFSET %d " @@ -927,7 +979,9 @@ get_software_categories (TrackerSparqlConnection *connection, } else { query = g_strdup_printf ("SELECT ?cat nie:title(?cat) " "WHERE {" - " ?cat a nfo:SoftwareCategory ." + " GRAPH tracker:Software {" + " ?cat a nfo:SoftwareCategory ." + " }" "} " "ORDER BY ASC(nie:title(?cat)) " "OFFSET %d " @@ -997,16 +1051,20 @@ get_files (TrackerSparqlConnection *connection, else limit_str = g_strdup_printf (" "); - show_all_str = show_all ? "" : "?u nie:isStoredAs/nie:dataSource/tracker:available true . "; + show_all_str = show_all ? "" : "?url nie:dataSource/tracker:available true . "; fts = get_fts_string (search_terms, use_or_operator); if (fts) { - query = g_strdup_printf ("SELECT ?u ?url " + query = g_strdup_printf ("SELECT DISTINCT ?u ?url " "WHERE { " - " ?u a nie:InformationElement ;" - " nie:isStoredAs ?url ;" - " fts:match \"%s\" ." - " %s" + " GRAPH ?g {" + " ?u a nie:InformationElement ;" + " nie:isStoredAs ?url ;" + " fts:match \"%s\" ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " "ORDER BY ASC(?urn) " "OFFSET %d " @@ -1016,11 +1074,15 @@ get_files (TrackerSparqlConnection *connection, search_offset, limit_str); } else { - query = g_strdup_printf ("SELECT ?u ?url " + query = g_strdup_printf ("SELECT DISTINCT ?u ?url " "WHERE { " - " ?u a nie:InformationElement ;" - " nie:isStoredAs ?url ." - " %s" + " GRAPH ?g {" + " ?u a nie:InformationElement ;" + " nie:isStoredAs ?url ." + " }" + " GRAPH tracker:FileSystem {" + " %s" + " }" "} " "ORDER BY ASC(?urn) " "OFFSET %d " @@ -1058,18 +1120,20 @@ get_folders (TrackerSparqlConnection *connection, else limit_str = g_strdup_printf (" "); - show_all_str = show_all ? "" : "?u nie:isStoredAs/nie:dataSource/tracker:available true . "; + show_all_str = show_all ? "" : "?url nie:dataSource/tracker:available true . "; fts = get_fts_string (search_terms, use_or_operator); if (fts) { - query = g_strdup_printf ("SELECT ?u nie:isStoredAs(?u) " + query = g_strdup_printf ("SELECT ?u ?url " "WHERE { " - " ?u a nfo:Folder ;" - " nie:isStoredAs ?url ." - " ?url fts:match \"%s\" ." - " %s" + " GRAPH tracker:FileSystem {" + " ?u a nfo:Folder ;" + " nie:isStoredAs ?url ." + " ?url fts:match \"%s\" ." + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?u)) " + "ORDER BY ASC(?url) " "OFFSET %d " "%s", fts, @@ -1077,12 +1141,15 @@ get_folders (TrackerSparqlConnection *connection, search_offset, limit_str); } else { - query = g_strdup_printf ("SELECT ?u nie:isStoredAs(?u) " + query = g_strdup_printf ("SELECT ?u ?url " "WHERE { " - " ?u a nfo:Folder ." - " %s" + " GRAPH tracker:FileSystem {" + " ?u a nfo:Folder ;" + " nie:isStoredAs ?url ." + " %s" + " }" "} " - "ORDER BY ASC(nie:isStoredAs(?u)) " + "ORDER BY ASC(?url) " "OFFSET %d " "%s", show_all_str, @@ -1111,57 +1178,107 @@ get_all_by_search (TrackerSparqlConnection *connection, TrackerSparqlCursor *cursor; gchar *fts; gchar *query; - const gchar *show_all_str; - gchar *limit_str; fts = get_fts_string (search_words, use_or_operator); if (!fts) { return FALSE; } - if (search_limit != -1) - limit_str = g_strdup_printf ("LIMIT %d", search_limit); - else - limit_str = g_strdup_printf (" "); - - show_all_str = show_all ? "" : "?s nie:isStoredAs/nie:dataSource/tracker:available | nie:dataSource/tracker:available true . "; + if (search_limit < 0) + search_limit = G_MAXINT; if (details) { - query = g_strdup_printf ("SELECT tracker:coalesce (nie:isStoredAs (?s), ?s) nie:mimeType (?s) ?type fts:snippet(?s, \"%s\", \"%s\") " + query = g_strdup_printf ("SELECT ?uri ?mimetype ?type ?snippet " "WHERE {" - " ?s fts:match \"%s\" ;" - " rdf:type ?type ." - " %s" + " {" + " SELECT (?s AS ?uri) ?mimetype ?type (fts:snippet(?s, \"%s\", \"%s\") AS ?snippet) {" + " GRAPH tracker:FileSystem {" + " ?s a nfo:FileDataObject ;" + " fts:match \"%s\" ;" + " rdf:type ?type ;" + " nie:dataSource ?ds ." + " ?ie nie:isStoredAs ?s;" + " nie:mimeType ?mimetype ." + " OPTIONAL { ?ds tracker:available ?available } ." + " FILTER (IF (%s, true, ?available)) ." + " }" + " }" + " } UNION {" + " SELECT ?uri ?mimetype ?type (fts:snippet(?s, \"%s\", \"%s\") AS ?snippet) {" + " GRAPH ?g {" + " ?s a nie:InformationElement ;" + " fts:match \"%s\" ;" + " rdf:type ?type ;" + " nie:mimeType ?mimetype ;" + " nie:isStoredAs ?uri ." + " }" + " GRAPH tracker:FileSystem {" + " ?uri nie:dataSource ?ds ." + " OPTIONAL { ?ds tracker:available ?available } ." + " FILTER (IF (%s, true, ?available)) ." + " }" + " }" + " }" "} " - "GROUP BY nie:isStoredAs(?s) " - "ORDER BY nie:isStoredAs(?s) " - "OFFSET %d" - "%s", + "GROUP BY ?uri " + "ORDER BY ?uri " + "OFFSET %d " + "LIMIT %d", disable_color ? "" : SNIPPET_BEGIN, disable_color ? "" : SNIPPET_END, fts, - show_all_str, + show_all ? "true" : "false", + disable_color ? "" : SNIPPET_BEGIN, + disable_color ? "" : SNIPPET_END, + fts, + show_all ? "true" : "false", search_offset, - limit_str); + search_limit); } else { - query = g_strdup_printf ("SELECT tracker:coalesce (nie:isStoredAs (?s), ?s) fts:snippet(?s, \"%s\", \"%s\") " + query = g_strdup_printf ("SELECT ?uri SAMPLE(?snippet) " "WHERE {" - " ?s fts:match \"%s\" ." - " %s" + " {" + " SELECT (?s AS ?uri) (fts:snippet(?s, \"%s\", \"%s\") AS ?snippet) {" + " GRAPH tracker:FileSystem {" + " ?s a nfo:FileDataObject ;" + " fts:match \"%s\" ;" + " nie:dataSource ?ds ." + " OPTIONAL { ?ds tracker:available ?available } ." + " FILTER (IF (%s, true, ?available))" + " }" + " }" + " } UNION {" + " SELECT ?uri (fts:snippet(?s, \"%s\", \"%s\") AS ?snippet) {" + " GRAPH ?g {" + " ?s a nie:InformationElement ;" + " fts:match \"%s\" ;" + " nie:isStoredAs ?uri ." + " }" + " GRAPH tracker:FileSystem {" + " ?uri nie:dataSource ?ds ." + " OPTIONAL { ?ds tracker:available ?available } ." + " FILTER (IF (%s, true, ?available))" + " }" + " }" + " }" "} " - "ORDER BY nie:isStoredAs(?s) " + "GROUP BY ?uri " + "ORDER BY ?uri " "OFFSET %d " - "%s", + "LIMIT %d", disable_color ? "" : SNIPPET_BEGIN, disable_color ? "" : SNIPPET_END, fts, - show_all_str, + show_all ? "true" : "false", + disable_color ? "" : SNIPPET_BEGIN, + disable_color ? "" : SNIPPET_END, + fts, + show_all ? "true" : "false", search_offset, - limit_str); + search_limit); } g_free (fts); - g_free (limit_str); cursor = tracker_sparql_connection_query (connection, query, NULL, &error); g_free (query); -- GitLab
