summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam@afuera.me.uk>2020-09-04 12:33:40 +0000
committerSam Thursfield <sam@afuera.me.uk>2020-09-04 12:33:40 +0000
commit916b1057462b656664feaf139b2510e8fa79f9b4 (patch)
tree02bfd7108afce4313fdf53160e6a2293b6bdab49
parente273a214a691cf18388e43a38d14f3d4ac53b08a (diff)
parent91676e6b96a2c7f2ea1f349f6b05884da8a196cc (diff)
downloadtracker-916b1057462b656664feaf139b2510e8fa79f9b4.tar.gz
Merge branch 'wip/carlosg/fts5-syntax-under-the-rug' into 'master'
libtracker-data: Do not expose FTS5 syntax through fts:match Closes gtk#3114 See merge request GNOME/tracker!310
-rw-r--r--src/libtracker-data/tracker-sparql.c9
-rw-r--r--tests/libtracker-fts/input/fts3input-1.out1
-rw-r--r--tests/libtracker-fts/input/fts3input-1.rq1
-rw-r--r--tests/libtracker-fts/input/fts3input-2.out1
-rw-r--r--tests/libtracker-fts/input/fts3input-2.rq1
-rw-r--r--tests/libtracker-fts/input/fts3input-3.out2
-rw-r--r--tests/libtracker-fts/input/fts3input-3.rq1
-rw-r--r--tests/libtracker-fts/input/fts3input-data.rq4
-rw-r--r--tests/libtracker-fts/limits/fts3limits-2.out5
-rw-r--r--tests/libtracker-fts/limits/fts3limits-2.rq2
-rw-r--r--tests/libtracker-fts/limits/fts3limits-4.out6
-rw-r--r--tests/libtracker-fts/limits/fts3limits-4.rq2
-rw-r--r--tests/libtracker-fts/tracker-fts-test.c1
13 files changed, 31 insertions, 5 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index e55795a2b..7219ce09a 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -1482,10 +1482,11 @@ tracker_sparql_add_fts_subquery (TrackerSparql *sparql,
if (tracker_sparql_find_graph (sparql, tracker_token_get_idstring (graph))) {
_append_string_printf (sparql,
"%s FROM \"%s\".\"fts5\" "
- "WHERE fts5 = ",
+ "WHERE fts5 = '\"' || REPLACE (",
select_items->str,
tracker_token_get_idstring (graph));
_append_literal_sql (sparql, binding);
+ _append_string (sparql, ", '\"', ' ') || '\"*'");
} else {
_append_empty_select (sparql, n_properties);
}
@@ -1497,9 +1498,10 @@ tracker_sparql_add_fts_subquery (TrackerSparql *sparql,
if (!sparql->policy.filter_unnamed_graph) {
_append_string_printf (sparql,
"%s, 0 FROM \"main\".\"fts5\" "
- "WHERE fts5 = ",
+ "WHERE fts5 = '\"' || REPLACE (",
select_items->str);
_append_literal_sql (sparql, binding);
+ _append_string (sparql, ", '\"', ' ') || '\"*'");
} else {
_append_empty_select (sparql, n_properties);
}
@@ -1511,11 +1513,12 @@ tracker_sparql_add_fts_subquery (TrackerSparql *sparql,
_append_string_printf (sparql,
"UNION ALL %s, %d AS graph "
"FROM \"%s\".\"fts5\" "
- "WHERE fts5 = ",
+ "WHERE fts5 = '\"' || REPLACE (",
select_items->str,
GPOINTER_TO_INT (graph_id),
(gchar *) graph_name);
_append_literal_sql (sparql, binding);
+ _append_string (sparql, ", '\"', ' ') || '\"*'");
}
}
diff --git a/tests/libtracker-fts/input/fts3input-1.out b/tests/libtracker-fts/input/fts3input-1.out
new file mode 100644
index 000000000..db6765d23
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-1.out
@@ -0,0 +1 @@
+"http://www.example.org/test#1"
diff --git a/tests/libtracker-fts/input/fts3input-1.rq b/tests/libtracker-fts/input/fts3input-1.rq
new file mode 100644
index 000000000..8d6c237fb
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-1.rq
@@ -0,0 +1 @@
+SELECT ?u { ?u fts:match "abc.def" }
diff --git a/tests/libtracker-fts/input/fts3input-2.out b/tests/libtracker-fts/input/fts3input-2.out
new file mode 100644
index 000000000..db6765d23
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-2.out
@@ -0,0 +1 @@
+"http://www.example.org/test#1"
diff --git a/tests/libtracker-fts/input/fts3input-2.rq b/tests/libtracker-fts/input/fts3input-2.rq
new file mode 100644
index 000000000..de51c164b
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-2.rq
@@ -0,0 +1 @@
+SELECT ?u { ?u fts:match 'abc def' }
diff --git a/tests/libtracker-fts/input/fts3input-3.out b/tests/libtracker-fts/input/fts3input-3.out
new file mode 100644
index 000000000..4025328ab
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-3.out
@@ -0,0 +1,2 @@
+"http://www.example.org/test#1"
+"http://www.example.org/test#2"
diff --git a/tests/libtracker-fts/input/fts3input-3.rq b/tests/libtracker-fts/input/fts3input-3.rq
new file mode 100644
index 000000000..56fb9ef4c
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-3.rq
@@ -0,0 +1 @@
+SELECT ?u { ?u fts:match '"abc"' }
diff --git a/tests/libtracker-fts/input/fts3input-data.rq b/tests/libtracker-fts/input/fts3input-data.rq
new file mode 100644
index 000000000..761884b10
--- /dev/null
+++ b/tests/libtracker-fts/input/fts3input-data.rq
@@ -0,0 +1,4 @@
+INSERT {
+ test:1 a test:A ; test:p "abc.def" .
+ test:2 a test:A ; test:p "\"abc\" \"hij\"" .
+}
diff --git a/tests/libtracker-fts/limits/fts3limits-2.out b/tests/libtracker-fts/limits/fts3limits-2.out
index cde9bcaf1..d235e926c 100644
--- a/tests/libtracker-fts/limits/fts3limits-2.out
+++ b/tests/libtracker-fts/limits/fts3limits-2.out
@@ -1 +1,6 @@
"http://www.example.org/test#2"
+"http://www.example.org/test#3"
+"http://www.example.org/test#4"
+"http://www.example.org/test#5"
+"http://www.example.org/test#6"
+"http://www.example.org/test#8"
diff --git a/tests/libtracker-fts/limits/fts3limits-2.rq b/tests/libtracker-fts/limits/fts3limits-2.rq
index edd03488f..a6046e583 100644
--- a/tests/libtracker-fts/limits/fts3limits-2.rq
+++ b/tests/libtracker-fts/limits/fts3limits-2.rq
@@ -1 +1 @@
-SELECT ?o WHERE { ?o fts:match "tr" }
+SELECT ?o WHERE { ?o fts:match "tr" } ORDER BY ?o
diff --git a/tests/libtracker-fts/limits/fts3limits-4.out b/tests/libtracker-fts/limits/fts3limits-4.out
index cde9bcaf1..f18d2cd0b 100644
--- a/tests/libtracker-fts/limits/fts3limits-4.out
+++ b/tests/libtracker-fts/limits/fts3limits-4.out
@@ -1 +1,7 @@
"http://www.example.org/test#2"
+"http://www.example.org/test#3"
+"http://www.example.org/test#4"
+"http://www.example.org/test#5"
+"http://www.example.org/test#6"
+"http://www.example.org/test#8"
+"http://www.example.org/test#9"
diff --git a/tests/libtracker-fts/limits/fts3limits-4.rq b/tests/libtracker-fts/limits/fts3limits-4.rq
index 31cbc5003..4b2a92b2e 100644
--- a/tests/libtracker-fts/limits/fts3limits-4.rq
+++ b/tests/libtracker-fts/limits/fts3limits-4.rq
@@ -1 +1 @@
-SELECT ?o WHERE { ?o fts:match "pr" }
+SELECT ?o WHERE { ?o fts:match "pr" } ORDER BY ?o
diff --git a/tests/libtracker-fts/tracker-fts-test.c b/tests/libtracker-fts/tracker-fts-test.c
index 584609bff..edac25010 100644
--- a/tests/libtracker-fts/tracker-fts-test.c
+++ b/tests/libtracker-fts/tracker-fts-test.c
@@ -40,6 +40,7 @@ const TestInfo tests[] = {
{ "fts3ae", 1 },
{ "prefix/fts3prefix", 3 },
{ "limits/fts3limits", 4 },
+ { "input/fts3input", 3 },
{ NULL }
};