[tracker/wip/carlosg/sparql1.1: 60/80] libtracker-data: Use GBytes as predicate argument to tracker_data_*_statement()



commit 330e4af8b65d4254a863e8d8e5502ae3a996192f
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Jun 16 23:19:34 2019 +0200

    libtracker-data: Use GBytes as predicate argument to tracker_data_*_statement()
    
    We want to embed more than strings there. Namely, this will be useful to handle
    rdf:langString as BLOBs.

 src/libtracker-data/tracker-data-manager.c | 50 ++++++++++------
 src/libtracker-data/tracker-data-update.c  | 92 ++++++++++++++++++------------
 src/libtracker-data/tracker-data-update.h  | 10 ++--
 src/libtracker-data/tracker-sparql-types.c |  4 +-
 src/libtracker-data/tracker-sparql-types.h |  2 +-
 src/libtracker-data/tracker-sparql.c       |  6 +-
 6 files changed, 99 insertions(+), 65 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 9035e843b..08cf84df5 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -481,6 +481,7 @@ update_property_value (TrackerDataManager  *manager,
        GError *error = NULL;
        gboolean needed = TRUE;
        gboolean is_new = FALSE;
+       GBytes *bytes;
 
        if (class) {
                is_new = tracker_class_get_is_new (class);
@@ -507,6 +508,7 @@ update_property_value (TrackerDataManager  *manager,
                                needed = FALSE;
                        } else {
                                gboolean unsup_onto_err = FALSE;
+                               GBytes *bytes;
 
                                if (allowed && !is_allowed_conversion (str, object, allowed)) {
                                        handle_unsupported_ontology_change (manager,
@@ -521,7 +523,10 @@ update_property_value (TrackerDataManager  *manager,
                                }
 
                                if (!unsup_onto_err) {
-                                       tracker_data_delete_statement (manager->data_update, NULL, subject, 
predicate, str, &error);
+                                       bytes = g_bytes_new (object, strlen (object) + 1);
+                                       tracker_data_delete_statement (manager->data_update, NULL, subject, 
predicate, bytes, &error);
+                                       g_bytes_unref (bytes);
+
                                        if (!error)
                                                tracker_data_update_buffer_flush (manager->data_update, 
&error);
                                }
@@ -544,9 +549,12 @@ update_property_value (TrackerDataManager  *manager,
 
 
        if (!error && needed && object) {
+               bytes = g_bytes_new (object, strlen (object) + 1);
                tracker_data_insert_statement (manager->data_update, NULL, subject,
-                                              predicate, object,
+                                              predicate, bytes,
                                               &error);
+               g_bytes_unref (bytes);
+
                if (!error)
                        tracker_data_update_buffer_flush (manager->data_update, &error);
        }
@@ -1332,17 +1340,22 @@ check_for_deleted_domain_index (TrackerDataManager *manager,
                for (l = deleted; l != NULL; l = l->next) {
                        GError *error = NULL;
                        TrackerProperty *prop = l->data;
+                       const gchar *uri;
+                       GBytes *bytes;
 
                        g_debug ("Ontology change: deleting tracker:domainIndex: %s",
                                 tracker_property_get_name (prop));
                        tracker_property_del_domain_index (prop, class);
                        tracker_class_del_domain_index (class, prop);
 
+                       uri = tracker_property_get_uri (prop);
+                       bytes = g_bytes_new (uri, strlen (uri) + 1);
                        tracker_data_delete_statement (manager->data_update, NULL,
                                                       tracker_class_get_uri (class),
                                                       TRACKER_PREFIX_TRACKER "domainIndex",
-                                                      tracker_property_get_uri (prop),
+                                                      bytes,
                                                       &error);
+                       g_bytes_unref (bytes);
 
                        if (error) {
                                g_critical ("Ontology change, %s", error->message);
@@ -1511,12 +1524,15 @@ check_for_deleted_super_properties (TrackerDataManager  *manager,
                        TrackerProperty *prop_to_remove = copy->data;
                        const gchar *object = tracker_property_get_uri (prop_to_remove);
                        const gchar *subject = tracker_property_get_uri (property);
+                       GBytes *bytes;
 
                        tracker_property_del_super_property (property, prop_to_remove);
 
+                       bytes = g_bytes_new (object, strlen (object) + 1);
                        tracker_data_delete_statement (manager->data_update, NULL, subject,
                                                       TRACKER_PREFIX_RDFS "subPropertyOf",
-                                                      object, &n_error);
+                                                      bytes, &n_error);
+                       g_bytes_unref (bytes);
 
                        if (!n_error) {
                                tracker_data_update_buffer_flush (manager->data_update, &n_error);
@@ -1945,6 +1961,7 @@ tracker_data_ontology_process_statement (TrackerDataManager *manager,
                                          gboolean            in_update)
 {
        GError *error = NULL;
+       GBytes *bytes;
 
        if (g_strcmp0 (predicate, RDF_TYPE) == 0) {
                if (g_strcmp0 (object, RDFS_CLASS) == 0) {
@@ -2019,27 +2036,24 @@ tracker_data_ontology_process_statement (TrackerDataManager *manager,
                }
        }
 
+       bytes = g_bytes_new (object, strlen (object) + 1);
+
        if (is_uri) {
                tracker_data_insert_statement_with_uri (manager->data_update, NULL, subject,
-                                                       predicate, object,
+                                                       predicate, bytes,
                                                        &error);
-
-               if (error != NULL) {
-                       g_critical ("%s", error->message);
-                       g_error_free (error);
-                       return;
-               }
-
        } else {
                tracker_data_insert_statement_with_string (manager->data_update, NULL, subject,
-                                                          predicate, object,
+                                                          predicate, bytes,
                                                           &error);
+       }
 
-               if (error != NULL) {
-                       g_critical ("%s", error->message);
-                       g_error_free (error);
-                       return;
-               }
+       g_bytes_unref (bytes);
+
+       if (error != NULL) {
+               g_critical ("%s", error->message);
+               g_error_free (error);
+               return;
        }
 }
 
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 178c539f2..bff026c38 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -590,13 +590,14 @@ cache_insert_value (TrackerData *data,
                     gboolean     date_time)
 {
        TrackerDataUpdateBufferTable    *table;
-       TrackerDataUpdateBufferProperty  property;
+       TrackerDataUpdateBufferProperty  property = { 0 };
 
        /* No need to strdup here, the incoming string is either always static, or
         * long-standing as tracker_property_get_name return value. */
        property.name = field_name;
 
-       property.value = *value;
+       g_value_init (&property.value, G_VALUE_TYPE (value));
+       g_value_copy (value, &property.value);
 #if HAVE_TRACKER_FTS
        property.fts = fts;
 #endif
@@ -627,10 +628,12 @@ cache_delete_value (TrackerData *data,
                     gboolean     date_time)
 {
        TrackerDataUpdateBufferTable    *table;
-       TrackerDataUpdateBufferProperty  property;
+       TrackerDataUpdateBufferProperty  property = { 0 };
 
        property.name = field_name;
-       property.value = *value;
+
+       g_value_init (&property.value, G_VALUE_TYPE (value));
+       g_value_copy (value, &property.value);
 #if HAVE_TRACKER_FTS
        property.fts = fts;
 #endif
@@ -1430,14 +1433,17 @@ get_old_property_values (TrackerData      *data,
 }
 
 static void
-string_to_gvalue (const gchar         *value,
-                  TrackerPropertyType  type,
-                  GValue              *gvalue,
-                  TrackerData         *data,
-                  GError             **error)
+bytes_to_gvalue (GBytes              *bytes,
+                 TrackerPropertyType  type,
+                 GValue              *gvalue,
+                 TrackerData         *data,
+                 GError             **error)
 {
        gint object_id;
        gchar *datetime;
+       const gchar *value;
+
+       value = g_bytes_get_data (bytes, NULL);
 
        switch (type) {
        case TRACKER_PROPERTY_TYPE_STRING:
@@ -2175,13 +2181,14 @@ tracker_data_delete_statement (TrackerData  *data,
                                const gchar  *graph,
                                const gchar  *subject,
                                const gchar  *predicate,
-                               const gchar  *object,
+                               GBytes       *object,
                                GError      **error)
 {
        TrackerClass       *class;
        gint                subject_id = 0, graph_id = 0;
        gboolean            change = FALSE;
        TrackerOntologies  *ontologies;
+       const gchar *object_str;
 
        g_return_if_fail (subject != NULL);
        g_return_if_fail (predicate != NULL);
@@ -2201,14 +2208,16 @@ tracker_data_delete_statement (TrackerData  *data,
        if (graph)
                graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
+       object_str = g_bytes_get_data (object, NULL);
+
        if (object && g_strcmp0 (predicate, TRACKER_PREFIX_RDF "type") == 0) {
-               class = tracker_ontologies_get_class_by_uri (ontologies, object);
+               class = tracker_ontologies_get_class_by_uri (ontologies, object_str);
                if (class != NULL) {
                        data->has_persistent = TRUE;
                        cache_delete_resource_type (data, class);
                } else {
                        g_set_error (error, TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_CLASS,
-                                    "Class '%s' not found in the ontology", object);
+                                    "Class '%s' not found in the ontology", object_str);
                }
        } else {
                gint pred_id = 0, object_id = 0;
@@ -2222,7 +2231,7 @@ tracker_data_delete_statement (TrackerData  *data,
                        pred_id = tracker_property_get_id (field);
                        data->has_persistent = TRUE;
 
-                       string_to_gvalue (object, tracker_property_get_data_type (field), &object_value, 
data, &inner_error);
+                       bytes_to_gvalue (object, tracker_property_get_data_type (field), &object_value, data, 
&inner_error);
                        if (inner_error) {
                                g_propagate_error (error, inner_error);
                                return;
@@ -2243,7 +2252,7 @@ tracker_data_delete_statement (TrackerData  *data,
                                delegate = g_ptr_array_index (data->delete_callbacks, n);
                                delegate->callback (graph_id, graph, subject_id, subject,
                                                    pred_id, object_id,
-                                                   object,
+                                                   object_str,
                                                    data->resource_buffer->types,
                                                    delegate->user_data);
                        }
@@ -2310,7 +2319,7 @@ tracker_data_insert_statement (TrackerData  *data,
                                const gchar  *graph,
                                const gchar  *subject,
                                const gchar  *predicate,
-                               const gchar  *object,
+                               GBytes       *object,
                                GError      **error)
 {
        TrackerProperty *property;
@@ -2341,7 +2350,7 @@ tracker_data_insert_statement_with_uri (TrackerData  *data,
                                         const gchar  *graph,
                                         const gchar  *subject,
                                         const gchar  *predicate,
-                                        const gchar  *object,
+                                        GBytes       *object,
                                         GError      **error)
 {
        GError          *actual_error = NULL;
@@ -2352,6 +2361,7 @@ tracker_data_insert_statement_with_uri (TrackerData  *data,
        gboolean change = FALSE;
        TrackerOntologies *ontologies;
        TrackerDBInterface *iface;
+       const gchar *object_str;
 
        g_return_if_fail (subject != NULL);
        g_return_if_fail (predicate != NULL);
@@ -2382,26 +2392,28 @@ tracker_data_insert_statement_with_uri (TrackerData  *data,
        if (graph)
                graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
+       object_str = g_bytes_get_data (object, NULL);
+
        if (property == tracker_ontologies_get_rdf_type (ontologies)) {
                /* handle rdf:type statements specially to
                   cope with inference and insert blank rows */
-               class = tracker_ontologies_get_class_by_uri (ontologies, object);
+               class = tracker_ontologies_get_class_by_uri (ontologies, object_str);
                if (class != NULL) {
                        cache_create_service_decomposed (data, class);
                } else {
                        g_set_error (error, TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_CLASS,
-                                    "Class '%s' not found in the ontology", object);
+                                    "Class '%s' not found in the ontology", object_str);
                        return;
                }
 
                final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id (data->manager, 
iface, predicate);
-               object_id = query_resource_id (data, object);
+               object_id = query_resource_id (data, object_str);
 
                change = TRUE;
        } else {
                GValue object_value = G_VALUE_INIT;
 
-               string_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, 
&actual_error);
+               bytes_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, 
&actual_error);
                if (actual_error) {
                        g_propagate_error (error, actual_error);
                        return;
@@ -2416,7 +2428,7 @@ tracker_data_insert_statement_with_uri (TrackerData  *data,
 
                if (change) {
                        final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id 
(data->manager, iface, predicate);
-                       object_id = query_resource_id (data, object);
+                       object_id = query_resource_id (data, object_str);
 
                        if (data->insert_callbacks) {
                                guint n;
@@ -2426,7 +2438,7 @@ tracker_data_insert_statement_with_uri (TrackerData  *data,
                                        delegate = g_ptr_array_index (data->insert_callbacks, n);
                                        delegate->callback (graph_id, graph, data->resource_buffer->id, 
subject,
                                                            final_prop_id, object_id,
-                                                           object,
+                                                           object_str,
                                                            data->resource_buffer->types,
                                                            delegate->user_data);
                                }
@@ -2440,7 +2452,7 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
                                            const gchar  *graph,
                                            const gchar  *subject,
                                            const gchar  *predicate,
-                                           const gchar  *object,
+                                           GBytes       *object,
                                            GError      **error)
 {
        GError          *actual_error = NULL;
@@ -2450,6 +2462,7 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
        TrackerOntologies *ontologies;
        TrackerDBInterface *iface;
        GValue object_value = G_VALUE_INIT;
+       const gchar *object_str;
 
        g_return_if_fail (subject != NULL);
        g_return_if_fail (predicate != NULL);
@@ -2480,7 +2493,7 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
        if (graph)
                graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
-       string_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, 
&actual_error);
+       bytes_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, 
&actual_error);
        if (actual_error) {
                g_propagate_error (error, actual_error);
                return;
@@ -2497,6 +2510,7 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
                guint n;
 
                pred_id = (pred_id != 0) ? pred_id : tracker_data_query_resource_id (data->manager, iface, 
predicate);
+               object_str = g_bytes_get_data (object, NULL);
 
                for (n = 0; n < data->insert_callbacks->len; n++) {
                        TrackerStatementDelegate *delegate;
@@ -2504,7 +2518,7 @@ tracker_data_insert_statement_with_string (TrackerData  *data,
                        delegate = g_ptr_array_index (data->insert_callbacks, n);
                        delegate->callback (graph_id, graph, data->resource_buffer->id, subject,
                                            pred_id, 0 /* Always a literal */,
-                                           object,
+                                           object_str,
                                            data->resource_buffer->types,
                                            delegate->user_data);
                }
@@ -2516,7 +2530,7 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
                                         const gchar  *graph,
                                         const gchar  *subject,
                                         const gchar  *predicate,
-                                        const gchar  *object,
+                                        GBytes       *object,
                                         GError      **error)
 {
        GError          *actual_error = NULL;
@@ -2527,6 +2541,7 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
        gboolean         change = FALSE;
        TrackerOntologies *ontologies;
        TrackerDBInterface *iface;
+       const gchar *object_str;
 
        g_return_if_fail (subject != NULL);
        g_return_if_fail (predicate != NULL);
@@ -2556,21 +2571,23 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
        if (graph)
                graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
+       object_str = g_bytes_get_data (object, NULL);
+
        if (property == tracker_ontologies_get_rdf_type (ontologies)) {
                /* handle rdf:type statements specially to
                   cope with inference and insert blank rows */
-               class = tracker_ontologies_get_class_by_uri (ontologies, object);
+               class = tracker_ontologies_get_class_by_uri (ontologies, object_str);
                if (class != NULL) {
                        /* Create here is fine for Update too */
                        cache_create_service_decomposed (data, class);
                } else {
                        g_set_error (error, TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_CLASS,
-                                    "Class '%s' not found in the ontology", object);
+                                    "Class '%s' not found in the ontology", object_str);
                        return;
                }
 
                final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id (data->manager, 
iface, predicate);
-               object_id = query_resource_id (data, object);
+               object_id = query_resource_id (data, object_str);
 
                change = TRUE;
        } else {
@@ -2643,7 +2660,7 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
                        return;
                }
 
-               string_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, 
&new_error);
+               bytes_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, 
&new_error);
                if (new_error) {
                        g_propagate_error (error, new_error);
                        return;
@@ -2658,7 +2675,7 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
 
                if (change) {
                        final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id 
(data->manager, iface, predicate);
-                       object_id = query_resource_id (data, object);
+                       object_id = query_resource_id (data, object_str);
 
                        if (!multiple_values && data->delete_callbacks) {
                                guint n;
@@ -2685,7 +2702,7 @@ tracker_data_update_statement_with_uri (TrackerData  *data,
                                        delegate = g_ptr_array_index (data->insert_callbacks, n);
                                        delegate->callback (graph_id, graph, data->resource_buffer->id, 
subject,
                                                            final_prop_id, object_id,
-                                                           object,
+                                                           object_str,
                                                            data->resource_buffer->types,
                                                            delegate->user_data);
                                }
@@ -2699,7 +2716,7 @@ tracker_data_update_statement_with_string (TrackerData  *data,
                                            const gchar  *graph,
                                            const gchar  *subject,
                                            const gchar  *predicate,
-                                           const gchar  *object,
+                                           GBytes       *object,
                                            GError      **error)
 {
        GError *actual_error = NULL;
@@ -2710,6 +2727,7 @@ tracker_data_update_statement_with_string (TrackerData  *data,
        TrackerOntologies *ontologies;
        TrackerDBInterface *iface;
        GValue object_value = G_VALUE_INIT;
+       const gchar *object_str;
 #if HAVE_TRACKER_FTS
        GError *new_error = NULL;
 #endif /* HAVE_TRACKER_FTS */
@@ -2759,7 +2777,7 @@ tracker_data_update_statement_with_string (TrackerData  *data,
        }
 #endif /* HAVE_TRACKER_FTS */
 
-       string_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, &new_error);
+       bytes_to_gvalue (object, tracker_property_get_data_type (property), &object_value, data, &new_error);
        if (new_error) {
                g_propagate_error (error, new_error);
                return;
@@ -2775,6 +2793,8 @@ tracker_data_update_statement_with_string (TrackerData  *data,
        if (graph)
                graph_id = tracker_data_manager_find_graph (data->manager, graph);
 
+       object_str = g_bytes_get_data (object, NULL);
+
        if (((!multiple_values && data->delete_callbacks) || data->insert_callbacks) && change) {
                pred_id = (pred_id != 0) ? pred_id : tracker_data_query_resource_id (data->manager, iface, 
predicate);
        }
@@ -2803,7 +2823,7 @@ tracker_data_update_statement_with_string (TrackerData  *data,
                        delegate = g_ptr_array_index (data->insert_callbacks, n);
                        delegate->callback (graph_id, graph, data->resource_buffer->id, subject,
                                            pred_id, 0 /* Always a literal */,
-                                           object,
+                                           object_str,
                                            data->resource_buffer->types,
                                            delegate->user_data);
                }
@@ -2815,7 +2835,7 @@ tracker_data_update_statement (TrackerData  *data,
                                const gchar  *graph,
                                const gchar  *subject,
                                const gchar  *predicate,
-                               const gchar  *object,
+                               GBytes       *object,
                                GError      **error)
 {
        TrackerProperty *property;
diff --git a/src/libtracker-data/tracker-data-update.h b/src/libtracker-data/tracker-data-update.h
index eda5514b9..a7f60eaa5 100644
--- a/src/libtracker-data/tracker-data-update.h
+++ b/src/libtracker-data/tracker-data-update.h
@@ -68,31 +68,31 @@ void     tracker_data_delete_statement              (TrackerData               *
                                                      const gchar               *graph,
                                                      const gchar               *subject,
                                                      const gchar               *predicate,
-                                                     const gchar               *object,
+                                                     GBytes                    *object,
                                                      GError                   **error);
 void     tracker_data_insert_statement              (TrackerData               *data,
                                                      const gchar               *graph,
                                                      const gchar               *subject,
                                                      const gchar               *predicate,
-                                                     const gchar               *object,
+                                                     GBytes                    *object,
                                                      GError                   **error);
 void     tracker_data_insert_statement_with_uri     (TrackerData               *data,
                                                      const gchar               *graph,
                                                      const gchar               *subject,
                                                      const gchar               *predicate,
-                                                     const gchar               *object,
+                                                     GBytes                    *object,
                                                      GError                   **error);
 void     tracker_data_insert_statement_with_string  (TrackerData               *data,
                                                      const gchar               *graph,
                                                      const gchar               *subject,
                                                      const gchar               *predicate,
-                                                     const gchar               *object,
+                                                     GBytes                    *object,
                                                      GError                   **error);
 void     tracker_data_update_statement              (TrackerData               *data,
                                                      const gchar               *graph,
                                                      const gchar               *subject,
                                                      const gchar               *predicate,
-                                                     const gchar               *object,
+                                                     GBytes                    *object,
                                                      GError                   **error);
 void     tracker_data_begin_transaction             (TrackerData               *data,
                                                      GError                   **error);
diff --git a/src/libtracker-data/tracker-sparql-types.c b/src/libtracker-data/tracker-sparql-types.c
index e8f97faf7..d1b92a980 100644
--- a/src/libtracker-data/tracker-sparql-types.c
+++ b/src/libtracker-data/tracker-sparql-types.c
@@ -142,10 +142,10 @@ tracker_variable_equal (gconstpointer data1,
 void
 tracker_token_literal_init (TrackerToken *token,
                             const gchar  *literal,
-                            gsize         len)
+                            gssize        len)
 {
        if (len < 0)
-               len = strlen (literal);
+               len = strlen (literal) + 1;
        token->type = TOKEN_TYPE_LITERAL;
        token->content.literal = g_bytes_new (literal, len);
 }
diff --git a/src/libtracker-data/tracker-sparql-types.h b/src/libtracker-data/tracker-sparql-types.h
index f99327ff9..c68f5f722 100644
--- a/src/libtracker-data/tracker-sparql-types.h
+++ b/src/libtracker-data/tracker-sparql-types.h
@@ -292,7 +292,7 @@ TrackerVariableBinding * tracker_variable_get_sample_binding (TrackerVariable *v
 /* Token */
 void tracker_token_literal_init  (TrackerToken    *token,
                                   const gchar     *literal,
-                                  gsize            len);
+                                  gssize           len);
 void tracker_token_variable_init (TrackerToken    *token,
                                   TrackerVariable *variable);
 void tracker_token_parameter_init (TrackerToken   *token,
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index e2525d9ae..b0b0a1c2d 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -1382,7 +1382,7 @@ tracker_sparql_apply_quad (TrackerSparql  *sparql,
                                               tracker_token_get_idstring (&sparql->current_state.graph),
                                               tracker_token_get_idstring (&sparql->current_state.subject),
                                               tracker_token_get_idstring (&sparql->current_state.predicate),
-                                              tracker_token_get_idstring (&sparql->current_state.object),
+                                              tracker_token_get_literal (&sparql->current_state.object),
                                               &inner_error);
                break;
        case TRACKER_SPARQL_TYPE_DELETE:
@@ -1390,7 +1390,7 @@ tracker_sparql_apply_quad (TrackerSparql  *sparql,
                                               tracker_token_get_idstring (&sparql->current_state.graph),
                                               tracker_token_get_idstring (&sparql->current_state.subject),
                                               tracker_token_get_idstring (&sparql->current_state.predicate),
-                                              tracker_token_get_idstring (&sparql->current_state.object),
+                                              tracker_token_get_literal (&sparql->current_state.object),
                                               &inner_error);
                break;
        case TRACKER_SPARQL_TYPE_UPDATE:
@@ -1398,7 +1398,7 @@ tracker_sparql_apply_quad (TrackerSparql  *sparql,
                                               tracker_token_get_idstring (&sparql->current_state.graph),
                                               tracker_token_get_idstring (&sparql->current_state.subject),
                                               tracker_token_get_idstring (&sparql->current_state.predicate),
-                                              tracker_token_get_idstring (&sparql->current_state.object),
+                                              tracker_token_get_literal (&sparql->current_state.object),
                                               &inner_error);
                break;
        default:


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