[arch-commits] Commit in tracker/repos (3 files)
Evangelos Foutras
foutrelis at gemini.archlinux.org
Sun Nov 21 23:06:03 UTC 2021
Date: Sunday, November 21, 2021 @ 23:06:03
Author: foutrelis
Revision: 428835
archrelease: copy trunk to staging-x86_64
Added:
tracker/repos/staging-x86_64/
tracker/repos/staging-x86_64/0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch
(from rev 428834, tracker/trunk/0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch)
tracker/repos/staging-x86_64/PKGBUILD
(from rev 428834, tracker/trunk/PKGBUILD)
---------------------------------------------------------+
0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch | 56 ++++++++++++++
PKGBUILD | 50 ++++++++++++
2 files changed, 106 insertions(+)
Copied: tracker/repos/staging-x86_64/0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch (from rev 428834, tracker/trunk/0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch)
===================================================================
--- staging-x86_64/0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch (rev 0)
+++ staging-x86_64/0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch 2021-11-21 23:06:03 UTC (rev 428835)
@@ -0,0 +1,56 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <carlosg at gnome.org>
+Date: Sun, 21 Mar 2021 17:38:48 +0100
+Subject: [PATCH] libtracker-data: Workaround SQLite 3.35.x bug
+
+The optimization for UNION ALLs inside JOINs had another unexpected
+victim:
+
+ SELECT * { GRAPH ?g { ?a ... OPTIONAL { ?a ... } } }
+
+Does now break when matching the graph between both sides of the
+LEFT JOIN caused by OPTIONAL, making all other values coming from
+the right hand side come back empty. Make it sure this specific case
+is ineligible for query flattening optimizations by adding a LIMIT
+clause on the right hand side of the LEFT JOIN. This brings back
+correct over fast.
+
+This workaround should be revisited when a SQLite fix is available.
+---
+ src/libtracker-data/tracker-sparql.c | 22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
+index e36d2341e..60e50c611 100644
+--- a/src/libtracker-data/tracker-sparql.c
++++ b/src/libtracker-data/tracker-sparql.c
+@@ -3170,8 +3170,28 @@ translate_OptionalGraphPattern (TrackerSparql *sparql,
+
+ _call_rule (sparql, NAMED_RULE_GroupGraphPattern, error);
+
+- if (do_join)
++ if (do_join) {
++ /* FIXME: This is a workaround for SQLite 3.35.x, where
++ * the optimization on UNION ALLs inside JOINs (Point 8c in
++ * the 3.35.0 release notes) break in this very specific
++ * case:
++ *
++ * SELECT * { GRAPH ?g { ?a ... OPTIONAL { ?a ... } } }
++ *
++ * This is a workaround to make this one case ineligible
++ * for query flattening optimizations, specifically make
++ * it fall through case 8 in the list at
++ * https://sqlite.org/optoverview.html#flattening,
++ * "The subquery does not use LIMIT or the outer query is not
++ * a join.", we will now meet both here.
++ *
++ * This should be evaluated again in future SQLite versions.
++ */
++ if (tracker_token_get_variable (&sparql->current_state.graph))
++ _append_string (sparql, "LIMIT -1 ");
++
+ _append_string (sparql, ") ");
++ }
+
+ return TRUE;
+ }
Copied: tracker/repos/staging-x86_64/PKGBUILD (from rev 428834, tracker/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD (rev 0)
+++ staging-x86_64/PKGBUILD 2021-11-21 23:06:03 UTC (rev 428835)
@@ -0,0 +1,50 @@
+# Maintainer: Jan Alexander Steffens (heftig) <heftig at archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch at gmail.com>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+
+pkgname=tracker
+pkgver=2.3.6+7+gb27396252
+pkgrel=3
+pkgdesc="Desktop-neutral user information store, search tool and indexer"
+url="https://wiki.gnome.org/Projects/Tracker"
+arch=(x86_64)
+license=(GPL)
+depends=(sqlite icu glib2 libffi util-linux libstemmer libseccomp libsoup
+ json-glib upower libnm)
+makedepends=(gobject-introspection vala git bash-completion meson)
+checkdepends=(python-gobject python-dbus)
+provides=(libtracker-{control,miner,sparql}-2.0.so)
+groups=(gnome)
+_commit=b2739625209c564192b339814264084046e1cf17 # tracker-2.3
+source=("git+https://gitlab.gnome.org/GNOME/tracker.git#commit=$_commit"
+ 0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch)
+sha256sums=('SKIP'
+ '00885d437f9257dbba0acad7bae0b9827c1ea09e3ff32727e3217469f3662920')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/_/./g;s/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+
+ # https://gitlab.gnome.org/GNOME/tracker/-/merge_requests/382
+ git apply -3 ../0001-libtracker-data-Workaround-SQLite-3.35.x-bug.patch
+
+ # test crashes meson: https://github.com/mesonbuild/meson/issues/8591
+ sed -i '/tracker-steroids/d' tests/meson.build
+}
+
+build() {
+ arch-meson $pkgname build
+ meson compile -C build
+}
+
+check() {
+ dbus-run-session meson test -C build --print-errorlogs -t 3
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
More information about the arch-commits
mailing list