[tracker/wip/carlosg/graphs: 6/12] libtracker-data: Handle property path subqueries on unknown graphs



commit 3bc696f7419559078dda59c74567afc0d889a9cf
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Apr 23 12:28:36 2020 +0200

    libtracker-data: Handle property path subqueries on unknown graphs
    
    That should be equivalent to poking an empty graph, but we instead
    trust the table exists and make the query fail.

 src/libtracker-data/tracker-sparql.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 781ee469d..5eea62dfb 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -743,10 +743,17 @@ _prepend_path_element (TrackerSparql      *sparql,
                        const gchar *graph;
 
                        graph = tracker_token_get_idstring (&sparql->current_state.graph);
-                       table_name = g_strdup_printf ("\"%s\".\"%s\"", graph,
-                                                     tracker_property_get_table_name 
(path_elem->data.property));
-                       graph_column = g_strdup_printf ("%d",
-                                                       tracker_data_manager_find_graph 
(sparql->data_manager, graph));
+
+                       if (tracker_data_manager_find_graph (sparql->data_manager, graph)) {
+                               table_name = g_strdup_printf ("\"%s\".\"%s\"", graph,
+                                                             tracker_property_get_table_name 
(path_elem->data.property));
+                               graph_column = g_strdup_printf ("%d",
+                                                               tracker_data_manager_find_graph 
(sparql->data_manager, graph));
+                       } else {
+                               /* Graph does not exist, ensure to come back empty */
+                               table_name = g_strdup ("(SELECT 0 AS ID, NULL, NULL, 0, 0 LIMIT 0)");
+                               graph_column = g_strdup ("0");
+                       }
                }
 
                _append_string_printf (sparql,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]