summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2010-06-09 17:14:28 +0200
committerJürg Billeter <j@bitron.ch>2010-06-10 10:09:36 +0200
commit68165f1d58421bd17fda5082c2599d7d2c32c5e2 (patch)
treebb7fb9f695ab67b614f150a41bcb034432f6c031
parent6abb425c65b2a53ebed4802b642416423a3bbea2 (diff)
downloadtracker-68165f1d58421bd17fda5082c2599d7d2c32c5e2.tar.gz
SPARQL: Only retrieve graph from database when necessary
-rw-r--r--src/libtracker-data/tracker-sparql-pattern.vala18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/libtracker-data/tracker-sparql-pattern.vala b/src/libtracker-data/tracker-sparql-pattern.vala
index 37115b775..4b169e7a2 100644
--- a/src/libtracker-data/tracker-sparql-pattern.vala
+++ b/src/libtracker-data/tracker-sparql-pattern.vala
@@ -22,6 +22,7 @@ namespace Tracker.Sparql {
class PredicateVariable : Object {
public string? subject;
public string? object;
+ public bool return_graph;
public Class? domain;
@@ -59,8 +60,11 @@ namespace Tracker.Sparql {
Expression.append_expression_as_string (sql, "\"%s\"".printf (prop.name), prop.data_type);
- sql.append_printf (" AS \"object\", \"%s:graph\" AS \"graph\" FROM ", prop.name);
- sql.append_printf ("\"%s\"", prop.table_name);
+ sql.append (" AS \"object\"");
+ if (return_graph) {
+ sql.append_printf (", \"%s:graph\" AS \"graph\"", prop.name);
+ }
+ sql.append_printf (" FROM \"%s\"", prop.table_name);
sql.append (" WHERE ID = ?");
@@ -102,8 +106,11 @@ namespace Tracker.Sparql {
Expression.append_expression_as_string (sql, "\"%s\"".printf (prop.name), prop.data_type);
- sql.append_printf (" AS \"object\", \"%s:graph\" AS \"graph\" FROM ", prop.name);
- sql.append_printf ("\"%s\"", prop.table_name);
+ sql.append (" AS \"object\"");
+ if (return_graph) {
+ sql.append_printf (", \"%s:graph\" AS \"graph\"", prop.name);
+ }
+ sql.append_printf (" FROM \"%s\"", prop.table_name);
}
}
} while (result_set.iter_next ());
@@ -1266,6 +1273,9 @@ class Tracker.Sparql.Pattern : Object {
// single object
table.predicate_variable.object = object;
}
+ if (current_graph != null) {
+ table.predicate_variable.return_graph = true;
+ }
table.sql_query_tablename = current_predicate + (++counter).to_string ();
triple_context.tables.append (table);