diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2019-07-21 10:41:38 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2019-09-10 00:22:58 +0200 |
commit | af90c3a5e77baa76b5843532e0c29d337c603f59 (patch) | |
tree | 7b69f82bf78583e4cf8187bd22bea7ba1e4abf14 /src | |
parent | 6dbecc6163f6cd76b96063a3d88a1d184912710e (diff) | |
download | tracker-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.c | 21 |
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))); |