[tracker/wip/carlosg/sparql1.1: 36/145] libtracker-data: Split database setup and ontology import steps
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/sparql1.1: 36/145] libtracker-data: Split database setup and ontology import steps
- Date: Thu, 18 Jul 2019 22:27:04 +0000 (UTC)
commit bdd0a25aef1a0b653c9fd2ce73d4d52c5ebdc5b7
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Mar 8 17:08:53 2019 +0100
libtracker-data: Split database setup and ontology import steps
When importing an ontology, we first created the database tables as
defined by the ontology, and then inserted the resources as defined
in the ontology into the tables themselves.
Split in two steps, but still call one after the other in the relevant
places.
src/libtracker-data/tracker-data-manager.c | 48 ++++++++++++++++++++++--------
1 file changed, 35 insertions(+), 13 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 18b05640f..2f9e5cd3f 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3525,20 +3525,16 @@ create_base_tables (TrackerDataManager *manager,
}
static void
-tracker_data_ontology_import_into_db (TrackerDataManager *manager,
- gboolean in_update,
- GError **error)
+tracker_data_ontology_setup_db (TrackerDataManager *manager,
+ TrackerDBInterface *iface,
+ gboolean in_update,
+ GError **error)
{
- TrackerDBInterface *iface;
TrackerClass **classes;
- TrackerProperty **properties;
- guint i, n_props, n_classes;
-
- iface = tracker_db_manager_get_writable_db_interface (manager->db_manager);
+ guint i, n_classes;
classes = tracker_ontologies_get_classes (manager->ontologies, &n_classes);
- properties = tracker_ontologies_get_properties (manager->ontologies, &n_props);
/* create tables */
for (i = 0; i < n_classes; i++) {
@@ -3554,6 +3550,20 @@ tracker_data_ontology_import_into_db (TrackerDataManager *manager,
return;
}
}
+}
+
+static void
+tracker_data_ontology_import_into_db (TrackerDataManager *manager,
+ TrackerDBInterface *iface,
+ gboolean in_update,
+ GError **error)
+{
+ TrackerClass **classes;
+ TrackerProperty **properties;
+ guint i, n_props, n_classes;
+
+ classes = tracker_ontologies_get_classes (manager->ontologies, &n_classes);
+ properties = tracker_ontologies_get_properties (manager->ontologies, &n_props);
/* insert classes into rdfs:Resource table */
for (i = 0; i < n_classes; i++) {
@@ -3588,6 +3598,7 @@ tracker_data_ontology_import_into_db (TrackerDataManager *manager,
}
}
}
+
}
static gint
@@ -4081,8 +4092,14 @@ tracker_data_manager_initable_init (GInitable *initable,
return FALSE;
}
- tracker_data_ontology_import_into_db (manager, FALSE,
- &internal_error);
+ tracker_data_ontology_setup_db (manager, iface, FALSE,
+ &internal_error);
+
+ if (!internal_error) {
+ tracker_data_ontology_import_into_db (manager, iface,
+ FALSE,
+ &internal_error);
+ }
if (internal_error) {
g_propagate_error (error, internal_error);
@@ -4437,8 +4454,13 @@ tracker_data_manager_initable_init (GInitable *initable,
tracker_db_interface_sqlite_fts_delete_table (iface);
#endif
- tracker_data_ontology_import_into_db (manager, TRUE,
- &ontology_error);
+ tracker_data_ontology_setup_db (manager, iface, TRUE,
+ &ontology_error);
+
+ if (!ontology_error) {
+ tracker_data_ontology_import_into_db (manager, iface, TRUE,
+ &ontology_error);
+ }
if (!ontology_error) {
#if HAVE_TRACKER_FTS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]