[tracker/wip/carlosg/sparql1.1: 43/56] sm tracker-data-update changes
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/sparql1.1: 43/56] sm tracker-data-update changes
- Date: Thu, 6 Jun 2019 11:19:46 +0000 (UTC)
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]