[tracker/wip/carlosg/sparql1.1: 10/56] libtracker-data: Move base tables creation outside of import_into_db



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]