[tracker/wip/carlosg/sparql1.1: 10/56] libtracker-data: Move base tables creation outside of import_into_db
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/sparql1.1: 10/56] libtracker-data: Move base tables creation outside of import_into_db
- Date: Thu, 6 Jun 2019 11:17:00 +0000 (UTC)
commit 9088624b5f8cd38da316c04fae899839ef85b3fa
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Mar 8 14:36:01 2019 +0100
libtracker-data: Move base tables creation outside of import_into_db
This needs different handling in both paths that import an ontology
into the database, so we may just do it differently as well. Also,
we want to separate ontology import from miscellaneous tables.
src/libtracker-data/tracker-data-manager.c | 73 ++++++++++++------------------
1 file changed, 29 insertions(+), 44 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index a7c294c35..18b05640f 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3500,34 +3500,21 @@ query_table_exists (TrackerDBInterface *iface,
static gboolean
create_base_tables (TrackerDataManager *manager,
TrackerDBInterface *iface,
- gboolean *altered,
GError **error)
{
GError *internal_error = NULL;
- if (!query_table_exists (iface, "Resource", &internal_error) && !internal_error) {
- tracker_db_interface_execute_query (iface, &internal_error,
- "CREATE TABLE Resource (ID INTEGER NOT NULL PRIMARY KEY,"
- " Uri TEXT NOT NULL, Refcount INTEGER DEFAULT 0, UNIQUE
(Uri))");
- } else if (!internal_error) {
- tracker_db_interface_execute_query (iface, &internal_error,
- "ALTER TABLE Resource ADD COLUMN Refcount INTEGER DEFAULT
0");
-
- if (!internal_error)
- *altered = TRUE;
- else
- g_clear_error (&internal_error);
- }
+ tracker_db_interface_execute_query (iface, &internal_error,
+ "CREATE TABLE Resource (ID INTEGER NOT NULL PRIMARY KEY,"
+ " Uri TEXT NOT NULL, Refcount INTEGER DEFAULT 0, UNIQUE (Uri))");
if (internal_error) {
g_propagate_error (error, internal_error);
return FALSE;
}
- if (!query_table_exists (iface, "Graph", &internal_error) && !internal_error) {
- tracker_db_interface_execute_query (iface, &internal_error,
- "CREATE TABLE Graph (ID INTEGER NOT NULL PRIMARY KEY)");
- }
+ tracker_db_interface_execute_query (iface, &internal_error,
+ "CREATE TABLE Graph (ID INTEGER NOT NULL PRIMARY KEY)");
if (internal_error) {
g_propagate_error (error, internal_error);
@@ -3547,36 +3534,18 @@ tracker_data_ontology_import_into_db (TrackerDataManager *manager,
TrackerClass **classes;
TrackerProperty **properties;
guint i, n_props, n_classes;
- gboolean base_tables_altered = FALSE;
-#if HAVE_TRACKER_FTS
- gboolean update_fts = FALSE;
-#endif
iface = tracker_db_manager_get_writable_db_interface (manager->db_manager);
classes = tracker_ontologies_get_classes (manager->ontologies, &n_classes);
properties = tracker_ontologies_get_properties (manager->ontologies, &n_props);
- if (!create_base_tables (manager, iface, &base_tables_altered, error)) {
- return;
- }
-
-#if HAVE_TRACKER_FTS
- if (base_tables_altered || in_update) {
- update_fts = base_tables_altered | tracker_data_manager_fts_changed (manager);
-
- if (update_fts)
- tracker_db_interface_sqlite_fts_delete_table (iface);
- }
-#endif
-
/* create tables */
for (i = 0; i < n_classes; i++) {
GError *internal_error = NULL;
/* Also !is_new classes are processed, they might have new properties */
create_decomposed_metadata_tables (manager, iface, classes[i], in_update,
- base_tables_altered ||
tracker_class_get_db_schema_changed (classes[i]),
&internal_error);
@@ -3619,14 +3588,6 @@ tracker_data_ontology_import_into_db (TrackerDataManager *manager,
}
}
}
-
-#if HAVE_TRACKER_FTS
- if (update_fts) {
- tracker_data_manager_update_fts (manager, iface);
- } else {
- tracker_data_manager_init_fts (iface, !in_update);
- }
-#endif
}
static gint
@@ -4116,6 +4077,10 @@ tracker_data_manager_initable_init (GInitable *initable,
return FALSE;
}
+ if (!create_base_tables (manager, iface, error)) {
+ return FALSE;
+ }
+
tracker_data_ontology_import_into_db (manager, FALSE,
&internal_error);
@@ -4124,6 +4089,10 @@ tracker_data_manager_initable_init (GInitable *initable,
return FALSE;
}
+#if HAVE_TRACKER_FTS
+ tracker_data_manager_init_fts (iface, TRUE);
+#endif
+
/* store ontology in database */
for (l = sorted; l; l = l->next) {
import_ontology_file (manager, l->data, FALSE);
@@ -4459,10 +4428,26 @@ tracker_data_manager_initable_init (GInitable *initable,
if (!ontology_error) {
/* Perform ALTER-TABLE and CREATE-TABLE calls for all that are is_new */
+#if HAVE_TRACKER_FTS
+ gboolean update_fts;
+
+ update_fts = tracker_data_manager_fts_changed (manager);
+
+ if (update_fts)
+ tracker_db_interface_sqlite_fts_delete_table (iface);
+#endif
+
tracker_data_ontology_import_into_db (manager, TRUE,
&ontology_error);
if (!ontology_error) {
+#if HAVE_TRACKER_FTS
+ if (update_fts) {
+ tracker_data_manager_update_fts (manager, iface);
+ } else {
+ tracker_data_manager_init_fts (iface, FALSE);
+ }
+#endif
tracker_data_ontology_process_changes_post_db (manager,
seen_classes,
seen_properties,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]