summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2019-07-21 10:41:38 +0200
committerCarlos Garnacho <carlosg@gnome.org>2019-09-10 00:22:58 +0200
commitaf90c3a5e77baa76b5843532e0c29d337c603f59 (patch)
tree7b69f82bf78583e4cf8187bd22bea7ba1e4abf14 /src
parent6dbecc6163f6cd76b96063a3d88a1d184912710e (diff)
downloadtracker-af90c3a5e77baa76b5843532e0c29d337c603f59.tar.gz
libtracker-data: Store class/property IDs in GVDB
Those are used by the query engine now, so we must ensure those have proper values if we end up reading the ontology from the GVDB cache.
Diffstat (limited to 'src')
-rw-r--r--src/libtracker-data/tracker-ontologies.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libtracker-data/tracker-ontologies.c b/src/libtracker-data/tracker-ontologies.c
index fc058b23a..7a8a6589f 100644
--- a/src/libtracker-data/tracker-ontologies.c
+++ b/src/libtracker-data/tracker-ontologies.c
@@ -217,10 +217,16 @@ tracker_ontologies_get_class_by_uri (TrackerOntologies *ontologies,
if (!class && priv->gvdb_table) {
if (tracker_ontologies_get_class_string_gvdb (ontologies, class_uri, "name") != NULL) {
+ const gchar *id_str;
+
class = tracker_class_new (TRUE);
tracker_class_set_ontologies (class, ontologies);
tracker_class_set_uri (class, class_uri);
+ id_str = tracker_ontologies_get_class_string_gvdb (ontologies, class_uri, "id");
+ if (id_str)
+ tracker_class_set_id (class, g_ascii_strtoll (id_str, NULL, 10));
+
g_hash_table_insert (priv->class_uris,
g_strdup (class_uri),
class);
@@ -379,10 +385,16 @@ tracker_ontologies_get_property_by_uri (TrackerOntologies *ontologies,
if (!property && priv->gvdb_table) {
if (tracker_ontologies_get_property_string_gvdb (ontologies, uri, "name") != NULL) {
+ const gchar *id_str;
+
property = tracker_property_new (TRUE);
tracker_property_set_ontologies (property, ontologies);
tracker_property_set_uri (property, uri);
+ id_str = tracker_ontologies_get_property_string_gvdb (ontologies, uri, "id");
+ if (id_str)
+ tracker_property_set_id (property, g_ascii_strtoll (id_str, NULL, 10));
+
g_hash_table_insert (priv->property_uris,
g_strdup (uri),
property);
@@ -518,6 +530,7 @@ tracker_ontologies_write_gvdb (TrackerOntologies *ontologies,
GvdbItem *root, *item;
const gchar *uri;
gboolean retval;
+ gchar *str;
gint i;
root_table = gvdb_hash_table_new (NULL, NULL);
@@ -548,6 +561,10 @@ 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));
+ gvdb_hash_table_insert_statement (table, item, uri, "id", str);
+ g_free (str);
+
gvdb_hash_table_insert_statement (table, item, uri, "name", tracker_class_get_name (class));
super_classes = tracker_class_get_super_classes (class);
@@ -576,6 +593,10 @@ 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));
+ gvdb_hash_table_insert_statement (table, item, uri, "id", str);
+ g_free (str);
+
gvdb_hash_table_insert_statement (table, item, uri, "name", tracker_property_get_name (property));
gvdb_hash_table_insert_statement (table, item, uri, "domain", tracker_class_get_uri (tracker_property_get_domain (property)));
gvdb_hash_table_insert_statement (table, item, uri, "range", tracker_class_get_uri (tracker_property_get_range (property)));