[tracker] SPARQL: Simplify SQL generated for FTS queries
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] SPARQL: Simplify SQL generated for FTS queries
- Date: Thu, 8 Oct 2009 13:13:06 +0000 (UTC)
commit b85b67333003cf401b0580157271fdd607364d90
Author: Jürg Billeter <j bitron ch>
Date: Wed Oct 7 10:55:48 2009 +0200
SPARQL: Simplify SQL generated for FTS queries
src/libtracker-data/tracker-sparql-query.vala | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index 34d5643..15bff10 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -1898,7 +1898,7 @@ public class Tracker.SparqlQuery : Object {
if (binding.is_fts_match) {
// parameters do not work with fts MATCH
string escaped_literal = string.joinv ("''", binding.literal.split ("'"));
- sql.append_printf (" IN (SELECT rowid FROM fts WHERE fts MATCH '%s')", escaped_literal);
+ sql.append_printf (" MATCH '%s'", escaped_literal);
} else {
sql.append (" = ");
if (binding.data_type == PropertyType.RESOURCE) {
@@ -2265,6 +2265,7 @@ public class Tracker.SparqlQuery : Object {
string db_table;
bool rdftype = false;
bool share_table = true;
+ bool is_fts_match = false;
bool newtable;
DataTable table;
@@ -2285,7 +2286,9 @@ public class Tracker.SparqlQuery : Object {
} else if (prop == null) {
if (current_predicate == "http://www.tracker-project.org/ontologies/fts#match") {
// fts:match
- db_table = "rdfs:Resource";
+ db_table = "fts";
+ share_table = false;
+ is_fts_match = true;
} else {
throw new SparqlError.UNKNOWN_PROPERTY ("Unknown property `%s'".printf (current_predicate));
}
@@ -2367,7 +2370,11 @@ public class Tracker.SparqlQuery : Object {
binding.data_type = PropertyType.RESOURCE;
binding.variable = current_subject;
binding.table = table;
- binding.sql_db_column_name = "ID";
+ if (is_fts_match) {
+ binding.sql_db_column_name = "rowid";
+ } else {
+ binding.sql_db_column_name = "ID";
+ }
var binding_list = pattern_var_map.lookup (binding.variable);
if (binding_list == null) {
binding_list = new VariableBindingList ();
@@ -2436,13 +2443,13 @@ public class Tracker.SparqlQuery : Object {
if (var_map.lookup (binding.variable) == null) {
var_map.insert (binding.variable, binding);
}
- } else if (current_predicate == "http://www.tracker-project.org/ontologies/fts#match") {
+ } else if (is_fts_match) {
var binding = new LiteralBinding ();
binding.is_fts_match = true;
binding.literal = object;
// binding.data_type = triple.object.type;
binding.table = table;
- binding.sql_db_column_name = "ID";
+ binding.sql_db_column_name = "fts";
pattern_bindings.append (binding);
} else {
var binding = new LiteralBinding ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]