[tracker/wip/carlosg/rowid-type: 4/7] libtracker-data: Use TrackerRowid in ontology data




commit e312cb33bd513bf463c8bde5a055b5e6463ef0aa
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Jan 16 15:40:01 2022 +0100

    libtracker-data: Use TrackerRowid in ontology data
    
    Use TrackerRowid in the places where we map properties/classes to
    ROWIDs, and map between URIs an those.

 src/libtracker-data/tracker-class.c        |  6 +++---
 src/libtracker-data/tracker-class.h        |  6 ++++--
 src/libtracker-data/tracker-data-manager.c | 20 ++++++++++----------
 src/libtracker-data/tracker-ontologies.c   | 16 ++++++++--------
 src/libtracker-data/tracker-ontologies.h   |  4 ++--
 src/libtracker-data/tracker-property.c     |  6 +++---
 src/libtracker-data/tracker-property.h     |  4 ++--
 src/libtracker-data/tracker-sparql.c       |  2 +-
 8 files changed, 33 insertions(+), 31 deletions(-)
---
diff --git a/src/libtracker-data/tracker-class.c b/src/libtracker-data/tracker-class.c
index c83879f86..3a9eac370 100644
--- a/src/libtracker-data/tracker-class.c
+++ b/src/libtracker-data/tracker-class.c
@@ -34,7 +34,7 @@ typedef struct _TrackerClassPrivate TrackerClassPrivate;
 struct _TrackerClassPrivate {
        gchar *uri;
        gchar *name;
-       gint id;
+       TrackerRowid id;
        guint is_new : 1;
        guint db_schema_changed : 1;
        guint notify : 1;
@@ -189,7 +189,7 @@ tracker_class_get_name (TrackerClass *service)
        return priv->name;
 }
 
-gint
+TrackerRowid
 tracker_class_get_id (TrackerClass *service)
 {
        TrackerClassPrivate *priv;
@@ -367,7 +367,7 @@ tracker_class_set_uri (TrackerClass *service,
 
 void
 tracker_class_set_id (TrackerClass *service,
-                      gint          value)
+                      TrackerRowid  value)
 {
        TrackerClassPrivate *priv;
 
diff --git a/src/libtracker-data/tracker-class.h b/src/libtracker-data/tracker-class.h
index e806c035f..c57631595 100644
--- a/src/libtracker-data/tracker-class.h
+++ b/src/libtracker-data/tracker-class.h
@@ -23,6 +23,8 @@
 
 #include <glib-object.h>
 
+#include "tracker-rowid.h"
+
 G_BEGIN_DECLS
 
 #if !defined (__LIBTRACKER_DATA_INSIDE__) && !defined (TRACKER_COMPILATION)
@@ -53,7 +55,7 @@ GType             tracker_class_get_type               (void) G_GNUC_CONST;
 TrackerClass *    tracker_class_new                    (gboolean             use_gvdb);
 const gchar *     tracker_class_get_uri                (TrackerClass        *service);
 const gchar *     tracker_class_get_name               (TrackerClass        *service);
-gint              tracker_class_get_id                 (TrackerClass        *service);
+TrackerRowid      tracker_class_get_id                 (TrackerClass        *service);
 gboolean          tracker_class_get_is_new             (TrackerClass        *service);
 gboolean          tracker_class_get_db_schema_changed  (TrackerClass        *service);
 gboolean          tracker_class_get_notify             (TrackerClass        *service);
@@ -78,7 +80,7 @@ void              tracker_class_del_domain_index       (TrackerClass        *ser
 void              tracker_class_reset_domain_indexes   (TrackerClass        *service);
 void              tracker_class_reset_super_classes   (TrackerClass        *service);
 void              tracker_class_set_id                 (TrackerClass        *service,
-                                                        gint                 id);
+                                                        TrackerRowid         id);
 void              tracker_class_set_is_new             (TrackerClass        *service,
                                                         gboolean             value);
 void              tracker_class_set_db_schema_changed  (TrackerClass        *service,
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index ca51c9e4f..640f1de87 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -575,7 +575,7 @@ update_property_value (TrackerDataManager  *manager,
 
                                if (!unsup_onto_err) {
                                        GValue value = G_VALUE_INIT;
-                                       gint64 subject_id = 0;
+                                       TrackerRowid subject_id = 0;
 
                                        tracker_data_query_string_to_value (manager,
                                                                            str, NULL,
@@ -614,7 +614,7 @@ update_property_value (TrackerDataManager  *manager,
 
        if (!error && needed && object) {
                GValue value = G_VALUE_INIT;
-               gint64 subject_id = 0;
+               TrackerRowid subject_id = 0;
 
                tracker_data_query_string_to_value (manager,
                                                    object, NULL,
@@ -858,7 +858,7 @@ tracker_data_ontology_load_statement (TrackerDataManager  *manager,
        if (g_strcmp0 (predicate, RDF_TYPE) == 0) {
                if (g_strcmp0 (object, RDFS_CLASS) == 0) {
                        TrackerClass *class;
-                       gint subject_id;
+                       TrackerRowid subject_id;
 
                        class = tracker_ontologies_get_class_by_uri (manager->ontologies, subject);
 
@@ -903,7 +903,7 @@ tracker_data_ontology_load_statement (TrackerDataManager  *manager,
                        g_object_unref (class);
                } else if (g_strcmp0 (object, RDF_PROPERTY) == 0) {
                        TrackerProperty *property;
-                       gint subject_id;
+                       TrackerRowid subject_id;
 
                        property = tracker_ontologies_get_property_by_uri (manager->ontologies, subject);
                        if (property != NULL) {
@@ -1550,7 +1550,7 @@ check_for_deleted_domain_index (TrackerDataManager *manager,
                        TrackerProperty *prop = l->data;
                        const gchar *uri;
                        GValue value = G_VALUE_INIT;
-                       gint64 class_id = 0;
+                       TrackerRowid class_id = 0;
 
                        TRACKER_NOTE (ONTOLOGY_CHANGES,
                                      g_message ("Ontology change: deleting nrl:domainIndex: %s",
@@ -1741,7 +1741,7 @@ check_for_deleted_super_properties (TrackerDataManager  *manager,
                        const gchar *object = tracker_property_get_uri (prop_to_remove);
                        const gchar *subject = tracker_property_get_uri (property);
                        GValue value = G_VALUE_INIT;
-                       gint64 subject_id;
+                       TrackerRowid subject_id;
 
                        property = tracker_ontologies_get_property_by_uri (ontologies,
                                                                           TRACKER_PREFIX_RDFS 
"subPropertyOf");
@@ -2220,7 +2220,7 @@ tracker_data_ontology_process_statement (TrackerDataManager *manager,
 {
        TrackerProperty *property;
        GValue value = G_VALUE_INIT;
-       gint64 subject_id = 0;
+       TrackerRowid subject_id = 0;
 
        if (g_strcmp0 (predicate, RDF_TYPE) == 0) {
                if (g_strcmp0 (object, RDFS_CLASS) == 0) {
@@ -2599,7 +2599,7 @@ db_get_static_data (TrackerDBInterface  *iface,
                while (tracker_db_cursor_iter_next (cursor, NULL, &internal_error)) {
                        TrackerClass *class;
                        const gchar  *uri;
-                       gint          id;
+                       TrackerRowid id;
                        GValue        value = { 0 };
                        gboolean      notify;
 
@@ -2668,7 +2668,7 @@ db_get_static_data (TrackerDBInterface  *iface,
                        const gchar     *uri, *domain_uri, *range_uri, *secondary_index_uri;
                        gboolean         multi_valued, indexed, fulltext_indexed;
                        gboolean         is_inverse_functional_property;
-                       gint             id;
+                       TrackerRowid id;
 
                        property = tracker_property_new (FALSE);
 
@@ -2775,7 +2775,7 @@ static void
 insert_uri_in_resource_table (TrackerDataManager  *manager,
                               TrackerDBInterface  *iface,
                               const gchar         *uri,
-                              gint                 id,
+                              TrackerRowid         id,
                               GError             **error)
 {
        TrackerDBStatement *stmt;
diff --git a/src/libtracker-data/tracker-ontologies.c b/src/libtracker-data/tracker-ontologies.c
index ed97bf648..ef0f8306d 100644
--- a/src/libtracker-data/tracker-ontologies.c
+++ b/src/libtracker-data/tracker-ontologies.c
@@ -102,8 +102,8 @@ tracker_ontologies_init (TrackerOntologies *ontologies)
                                                  g_free,
                                                  g_object_unref);
 
-       priv->id_uri_pairs = g_hash_table_new_full (g_direct_hash, g_direct_equal,
-                                                   NULL,
+       priv->id_uri_pairs = g_hash_table_new_full (tracker_rowid_hash, tracker_rowid_equal,
+                                                   (GDestroyNotify) tracker_rowid_free,
                                                    g_free);
 
        priv->properties = g_ptr_array_new_with_free_func (g_object_unref);
@@ -174,13 +174,13 @@ tracker_ontologies_get_rdf_type (TrackerOntologies *ontologies)
 
 const gchar*
 tracker_ontologies_get_uri_by_id (TrackerOntologies *ontologies,
-                                  gint               id)
+                                  TrackerRowid       id)
 {
        TrackerOntologiesPrivate *priv = tracker_ontologies_get_instance_private (ontologies);
 
        g_return_val_if_fail (id != -1, NULL);
 
-       return g_hash_table_lookup (priv->id_uri_pairs, GINT_TO_POINTER (id));
+       return g_hash_table_lookup (priv->id_uri_pairs, &id);
 }
 
 void
@@ -362,13 +362,13 @@ tracker_ontologies_add_property (TrackerOntologies *ontologies,
 
 void
 tracker_ontologies_add_id_uri_pair (TrackerOntologies *ontologies,
-                                    gint               id,
+                                    TrackerRowid       id,
                                     const gchar       *uri)
 {
        TrackerOntologiesPrivate *priv = tracker_ontologies_get_instance_private (ontologies);
 
        g_hash_table_insert (priv->id_uri_pairs,
-                            GINT_TO_POINTER (id),
+                            tracker_rowid_copy (&id),
                             g_strdup (uri));
 }
 
@@ -561,7 +561,7 @@ tracker_ontologies_write_gvdb (TrackerOntologies  *ontologies,
 
                item = gvdb_hash_table_insert_item (table, root, uri);
 
-               str = g_strdup_printf ("%d", tracker_class_get_id (class));
+               str = g_strdup_printf ("%" G_GINT64_FORMAT, tracker_class_get_id (class));
                gvdb_hash_table_insert_statement (table, item, uri, "id", str);
                g_free (str);
 
@@ -593,7 +593,7 @@ tracker_ontologies_write_gvdb (TrackerOntologies  *ontologies,
 
                item = gvdb_hash_table_insert_item (table, root, uri);
 
-               str = g_strdup_printf ("%d", tracker_property_get_id (property));
+               str = g_strdup_printf ("%" G_GINT64_FORMAT, tracker_property_get_id (property));
                gvdb_hash_table_insert_statement (table, item, uri, "id", str);
                g_free (str);
 
diff --git a/src/libtracker-data/tracker-ontologies.h b/src/libtracker-data/tracker-ontologies.h
index c984b7a2e..529be25fa 100644
--- a/src/libtracker-data/tracker-ontologies.h
+++ b/src/libtracker-data/tracker-ontologies.h
@@ -83,9 +83,9 @@ TrackerNamespace * tracker_ontologies_get_namespace_by_uri (TrackerOntologies *o
 TrackerOntology  * tracker_ontologies_get_ontology_by_uri  (TrackerOntologies *ontologies,
                                                             const gchar       *namespace_uri);
 const gchar*       tracker_ontologies_get_uri_by_id        (TrackerOntologies *ontologies,
-                                                            gint               id);
+                                                            TrackerRowid       id);
 void               tracker_ontologies_add_id_uri_pair      (TrackerOntologies *ontologies,
-                                                            gint               id,
+                                                            TrackerRowid       id,
                                                             const gchar       *uri);
 
 gboolean           tracker_ontologies_write_gvdb           (TrackerOntologies  *ontologies,
diff --git a/src/libtracker-data/tracker-property.c b/src/libtracker-data/tracker-property.c
index 7d84a7b35..0bab37b1b 100644
--- a/src/libtracker-data/tracker-property.c
+++ b/src/libtracker-data/tracker-property.c
@@ -71,7 +71,7 @@ struct _TrackerPropertyPrivate {
        TrackerClass   *domain_index;
        TrackerClass   *range;
        gint           weight;
-       gint           id;
+       TrackerRowid   id;
        guint          use_gvdb : 1;
        guint          indexed : 1;
        guint          orig_fulltext_indexed : 1;
@@ -469,7 +469,7 @@ tracker_property_get_weight (TrackerProperty *property)
        return priv->weight;
 }
 
-gint
+TrackerRowid
 tracker_property_get_id (TrackerProperty *property)
 {
        TrackerPropertyPrivate *priv;
@@ -879,7 +879,7 @@ tracker_property_set_weight (TrackerProperty *property,
 
 void
 tracker_property_set_id (TrackerProperty *property,
-                         gint             value)
+                         TrackerRowid     value)
 {
        TrackerPropertyPrivate *priv;
        g_return_if_fail (TRACKER_IS_PROPERTY (property));
diff --git a/src/libtracker-data/tracker-property.h b/src/libtracker-data/tracker-property.h
index 6ad6b9fda..84e98b5f5 100644
--- a/src/libtracker-data/tracker-property.h
+++ b/src/libtracker-data/tracker-property.h
@@ -82,7 +82,7 @@ TrackerClass *      tracker_property_get_domain              (TrackerProperty
 TrackerClass *      tracker_property_get_range               (TrackerProperty      *property);
 TrackerClass **     tracker_property_get_domain_indexes      (TrackerProperty      *property);
 gint                tracker_property_get_weight              (TrackerProperty      *property);
-gint                tracker_property_get_id                  (TrackerProperty      *property);
+TrackerRowid        tracker_property_get_id                  (TrackerProperty      *property);
 gboolean            tracker_property_get_indexed             (TrackerProperty      *property);
 TrackerProperty *   tracker_property_get_secondary_index     (TrackerProperty      *property);
 gboolean            tracker_property_get_orig_fulltext_indexed(TrackerProperty      *property);
@@ -116,7 +116,7 @@ void                tracker_property_set_range               (TrackerProperty
 void                tracker_property_set_weight              (TrackerProperty      *property,
                                                               gint                  value);
 void                tracker_property_set_id                  (TrackerProperty      *property,
-                                                              gint                  value);
+                                                              TrackerRowid          value);
 void                tracker_property_set_indexed             (TrackerProperty      *property,
                                                               gboolean              value);
 void                tracker_property_set_secondary_index     (TrackerProperty      *property,
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index a7915b441..2931c18d7 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -1112,7 +1112,7 @@ _prepend_path_element (TrackerSparql      *sparql,
                        _append_string (sparql, "WHERE ");
                }
 
-               _append_string_printf (sparql, "predicate != %d ",
+               _append_string_printf (sparql, "predicate != %" G_GINT64_FORMAT " ",
                                       tracker_property_get_id (path_elem->data.property));
                _append_string (sparql, ") ");
                break;


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