[tracker/wip/carlosg/sparql1.1: 43/56] sm tracker-data-update changes



commit 5af5769a431359a4b3ff9716902ecb645c93432f
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Jun 3 01:37:56 2019 +0200

    sm tracker-data-update changes

 src/libtracker-data/tracker-data-query.c  |  2 +-
 src/libtracker-data/tracker-data-update.c | 37 ++++++++++++++++++++-----------
 2 files changed, 25 insertions(+), 14 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-query.c b/src/libtracker-data/tracker-data-query.c
index 2694d6d0b..906c637d8 100644
--- a/src/libtracker-data/tracker-data-query.c
+++ b/src/libtracker-data/tracker-data-query.c
@@ -49,7 +49,7 @@ tracker_data_query_rdf_type (TrackerDataManager *manager,
 
        stmt = tracker_db_interface_create_statement (iface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, &error,
                                                      "SELECT (SELECT Uri FROM Resource WHERE ID = 
\"rdf:type\") "
-                                                     "FROM \"rdfs:Resource_rdf:type\" "
+                                                     "FROM \"unionGraph_rdfs:Resource_rdf:type\" "
                                                      "WHERE ID = ?");
 
        if (stmt) {
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index d42d967a7..6acdfe1cf 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -428,7 +428,7 @@ tracker_data_update_get_next_modseq (TrackerData *data)
        temp_iface = tracker_data_manager_get_writable_db_interface (data->manager);
 
        stmt = tracker_db_interface_create_statement (temp_iface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, 
&error,
-                                                     "SELECT MAX(\"tracker:modified\") AS A FROM 
\"rdfs:Resource\"");
+                                                     "SELECT MAX(\"tracker:modified\") AS A FROM 
\"unionGraph_rdfs:Resource\"");
 
        if (stmt) {
                cursor = tracker_db_statement_start_cursor (stmt, &error);
@@ -1423,7 +1423,8 @@ static GArray *
 get_property_values (TrackerData     *data,
                      TrackerProperty *property)
 {
-       gboolean            multiple_values;
+       gboolean multiple_values;
+       const gchar *database;
        GArray *old_values;
 
        multiple_values = tracker_property_get_multiple_values (property);
@@ -1432,6 +1433,9 @@ get_property_values (TrackerData     *data,
        g_array_set_clear_func (old_values, (GDestroyNotify) g_value_unset);
        g_hash_table_insert (data->resource_buffer->predicates, g_object_ref (property), old_values);
 
+       database = data->resource_buffer->graph->graph ?
+               data->resource_buffer->graph->graph : "main";
+
        if (!data->resource_buffer->create) {
                TrackerDBInterface *iface;
                TrackerDBStatement *stmt;
@@ -1446,8 +1450,8 @@ get_property_values (TrackerData     *data,
                iface = tracker_data_manager_get_writable_db_interface (data->manager);
 
                stmt = tracker_db_interface_create_statement (iface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, 
&error,
-                                                             "SELECT \"%s\" FROM \"%s\" WHERE ID = ?",
-                                                             field_name, table_name);
+                                                             "SELECT \"%s\" FROM \"%s\".\"%s\" WHERE ID = ?",
+                                                             field_name, database, table_name);
 
                if (stmt) {
                        tracker_db_statement_bind_int (stmt, 0, data->resource_buffer->id);
@@ -2166,9 +2170,9 @@ cache_delete_resource_type_full (TrackerData  *data,
                /* retrieve all subclasses we need to remove from the subject
                 * before we can remove the class specified as object of the statement */
                stmt = tracker_db_interface_create_statement (iface, TRACKER_DB_STATEMENT_CACHE_TYPE_SELECT, 
&error,
-                                                             "SELECT (SELECT Uri FROM Resource WHERE ID = 
\"rdfs:Class_rdfs:subClassOf\".ID) "
-                                                             "FROM \"rdfs:Resource_rdf:type\" INNER JOIN 
\"rdfs:Class_rdfs:subClassOf\" ON (\"rdf:type\" = \"rdfs:Class_rdfs:subClassOf\".ID) "
-                                                             "WHERE \"rdfs:Resource_rdf:type\".ID = ? AND 
\"rdfs:subClassOf\" = (SELECT ID FROM Resource WHERE Uri = ?)");
+                                                             "SELECT (SELECT Uri FROM Resource WHERE ID = 
\"unionGraph_rdfs:Class_rdfs:subClassOf\".ID) "
+                                                             "FROM \"unionGraph_rdfs:Resource_rdf:type\" 
INNER JOIN \"unionGraph_rdfs:Class_rdfs:subClassOf\" ON (\"rdf:type\" = 
\"unionGraph_rdfs:Class_rdfs:subClassOf\".ID) "
+                                                             "WHERE \"unionGraph_rdfs:Resource_rdf:type\".ID 
= ? AND \"unionGraph_rdfs:subClassOf\" = (SELECT ID FROM Resource WHERE Uri = ?)");
 
                if (stmt) {
                        tracker_db_statement_bind_int (stmt, 0, data->resource_buffer->id);
@@ -2441,7 +2445,9 @@ tracker_data_delete_statement (TrackerData  *data,
 
        resource_buffer_switch (data, graph, subject, subject_id);
        ontologies = tracker_data_manager_get_ontologies (data->manager);
-       graph_id = tracker_data_manager_find_graph (data->manager, graph);
+
+       if (graph)
+               graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
        if (object && g_strcmp0 (predicate, TRACKER_PREFIX_RDF "type") == 0) {
                class = tracker_ontologies_get_class_by_uri (ontologies, object);
@@ -2753,7 +2759,7 @@ tracker_data_insert_statement_with_uri (TrackerData  *data,
                change = TRUE;
        } else {
                /* add value to metadata database */
-               change = cache_insert_metadata_decomposed (data, property, object, 0, graph, 0, 
&actual_error);
+               change = cache_insert_metadata_decomposed (data, property, object, 0, graph, graph_id, 
&actual_error);
                if (actual_error) {
                        g_propagate_error (error, actual_error);
                        return;
@@ -2828,8 +2834,11 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
                return;
        }
 
+       if (graph)
+               graph_id = tracker_data_manager_find_graph (data->manager, graph);
+
        /* add value to metadata database */
-       change = cache_insert_metadata_decomposed (data, property, object, 0, graph, 0, &actual_error);
+       change = cache_insert_metadata_decomposed (data, property, object, 0, graph, graph_id, &actual_error);
        if (actual_error) {
                g_propagate_error (error, actual_error);
                return;
@@ -2838,7 +2847,6 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
        if (data->insert_callbacks && change) {
                guint n;
 
-               graph_id = (graph != NULL ? query_resource_id (data, graph) : 0);
                pred_id = (pred_id != 0) ? pred_id : tracker_data_query_resource_id (data->manager, iface, 
predicate);
 
                for (n = 0; n < data->insert_callbacks->len; n++) {
@@ -2916,7 +2924,8 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
                return;
        }
 
-       graph_id = tracker_data_manager_find_graph (data->manager, graph);
+       if (graph)
+               graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
        if (property == tracker_ontologies_get_rdf_type (ontologies)) {
                /* handle rdf:type statements specially to
@@ -3128,8 +3137,10 @@ tracker_data_update_statement_with_string (TrackerData  *data,
                return;
        }
 
+       if (graph)
+               graph_id = tracker_data_manager_find_graph (data->manager, graph);
+
        if (((!multiple_values && data->delete_callbacks) || data->insert_callbacks) && change) {
-               graph_id = (graph != NULL ? query_resource_id (data, graph) : 0);
                pred_id = (pred_id != 0) ? pred_id : tracker_data_query_resource_id (data->manager, iface, 
predicate);
        }
 


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