[tracker/wip/carlosg/sparql1.1: 91/113] libtracker-data: Do not error out on unknown graphs
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/sparql1.1: 91/113] libtracker-data: Do not error out on unknown graphs
- Date: Sun, 21 Jul 2019 14:36:52 +0000 (UTC)
commit 316c5811c61b60f145f461d27ed094729ef8615b
Author: Carlos Garnacho <carlosg gnome org>
Date: Sun Jul 14 23:45:06 2019 +0200
libtracker-data: Do not error out on unknown graphs
Those should be an equivalent to an empty graph instead. In order to
have the query valid for future executions where the graph might
exist, use the unionGraph with a check for its graph column.
src/libtracker-data/tracker-sparql.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 73222eeb1..18382fff3 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -1160,16 +1160,8 @@ _add_quad (TrackerSparql *sparql,
triple_context = TRACKER_TRIPLE_CONTEXT (sparql->current_state.context);
ontologies = tracker_data_manager_get_ontologies (sparql->data_manager);
- if (tracker_token_get_literal (graph)) {
+ if (tracker_token_get_literal (graph))
graph_db = tracker_token_get_idstring (graph);
- if (tracker_data_manager_find_graph (sparql->data_manager, graph_db) == 0) {
- g_set_error (error, TRACKER_SPARQL_ERROR,
- TRACKER_SPARQL_ERROR_UNKNOWN_GRAPH,
- "Unknown graph '%s'",
- tracker_token_get_idstring (graph));
- return FALSE;
- }
- }
if (tracker_token_get_literal (predicate)) {
gboolean share_table = TRUE;
@@ -1813,13 +1805,22 @@ _end_triples_block (TrackerSparql *sparql,
} else if (table->predicate_path) {
_append_string_printf (sparql, "\"%s\"", table->sql_db_tablename);
} else {
- if (table->graph) {
- _append_string_printf (sparql, "\"%s\".\"%s\"",
+ if (table->graph &&
+ tracker_data_manager_find_graph (sparql->data_manager, table->graph)) {
+ _append_string_printf (sparql, "\"%s\".\"%s\" ",
table->graph,
table->sql_db_tablename);
} else {
- _append_string_printf (sparql, "\"unionGraph_%s\" ",
- table->sql_db_tablename);
+ if (table->graph) {
+ _append_string_printf (sparql,
+ "(SELECT * FROM \"unionGraph_%s\" "
+ "WHERE graph = (SELECT ID FROM Resource WHERE
Uri = \"%s\")) ",
+ table->sql_db_tablename,
+ table->graph);
+ } else {
+ _append_string_printf (sparql, "\"unionGraph_%s\" ",
+ table->sql_db_tablename);
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]