[tracker/wip/carlosg/sparql1.1: 16/56] libtracker-data: Specify database on schema updating code



commit d97f9dce6e5166a46ad43410c76fac43f1692360
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Mar 15 00:17:16 2019 +0100

    libtracker-data: Specify database on schema updating code

 src/libtracker-data/tracker-data-manager.c | 199 +++++++++++++++++++----------
 1 file changed, 133 insertions(+), 66 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index ea3dedaa5..75f4bce6d 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -171,6 +171,7 @@ handle_unsupported_ontology_change (TrackerDataManager  *manager,
 
 static void
 set_secondary_index_for_single_value_property (TrackerDBInterface  *iface,
+                                               const gchar         *database,
                                                const gchar         *service_name,
                                                const gchar         *field_name,
                                                const gchar         *second_field_name,
@@ -184,7 +185,8 @@ set_secondary_index_for_single_value_property (TrackerDBInterface  *iface,
                 service_name, field_name);
 
        tracker_db_interface_execute_query (iface, &internal_error,
-                                           "DROP INDEX IF EXISTS \"%s_%s\"",
+                                           "DROP INDEX IF EXISTS \"%s\".\"%s_%s\"",
+                                           database,
                                            service_name,
                                            field_name);
 
@@ -199,9 +201,11 @@ set_secondary_index_for_single_value_property (TrackerDBInterface  *iface,
                         service_name, field_name, service_name, field_name, second_field_name);
 
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "CREATE INDEX \"%s_%s\" ON \"%s\" (\"%s\", \"%s\")",
+                                                   "CREATE INDEX \"%s\".\"%s_%s\" ON \"%s\".\"%s\" (\"%s\", 
\"%s\")",
+                                                   database,
                                                    service_name,
                                                    field_name,
+                                                   database,
                                                    service_name,
                                                    field_name,
                                                    second_field_name);
@@ -214,6 +218,7 @@ set_secondary_index_for_single_value_property (TrackerDBInterface  *iface,
 
 static void
 set_index_for_single_value_property (TrackerDBInterface  *iface,
+                                     const gchar         *database,
                                      const gchar         *service_name,
                                      const gchar         *field_name,
                                      gboolean             enabled,
@@ -227,7 +232,8 @@ set_index_for_single_value_property (TrackerDBInterface  *iface,
                 service_name, field_name);
 
        tracker_db_interface_execute_query (iface, &internal_error,
-                                           "DROP INDEX IF EXISTS \"%s_%s\"",
+                                           "DROP INDEX IF EXISTS \"%s\".\"%s_%s\"",
+                                           database,
                                            service_name,
                                            field_name);
 
@@ -249,9 +255,11 @@ set_index_for_single_value_property (TrackerDBInterface  *iface,
                         service_name, field_name, service_name, expr);
 
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "CREATE INDEX \"%s_%s\" ON \"%s\" (%s)",
+                                                   "CREATE INDEX \"%s\".\"%s_%s\" ON \"%s\".\"%s\" (%s)",
+                                                   database,
                                                    service_name,
                                                    field_name,
+                                                   database,
                                                    service_name,
                                                    expr);
                g_free (expr);
@@ -264,6 +272,7 @@ set_index_for_single_value_property (TrackerDBInterface  *iface,
 
 static void
 set_index_for_multi_value_property (TrackerDBInterface  *iface,
+                                    const gchar         *database,
                                     const gchar         *service_name,
                                     const gchar         *field_name,
                                     gboolean             enabled,
@@ -279,7 +288,8 @@ set_index_for_multi_value_property (TrackerDBInterface  *iface,
                 service_name, field_name);
 
        tracker_db_interface_execute_query (iface, &internal_error,
-                                           "DROP INDEX IF EXISTS \"%s_%s_ID_ID\"",
+                                           "DROP INDEX IF EXISTS \"%s\".\"%s_%s_ID_ID\"",
+                                           database,
                                            service_name,
                                            field_name);
 
@@ -296,7 +306,8 @@ set_index_for_multi_value_property (TrackerDBInterface  *iface,
                 service_name,
                 field_name);
        tracker_db_interface_execute_query (iface, &internal_error,
-                                           "DROP INDEX IF EXISTS \"%s_%s_ID\"",
+                                           "DROP INDEX IF EXISTS \"%s\".\"%s_%s_ID\"",
+                                           database,
                                            service_name,
                                            field_name);
 
@@ -323,9 +334,11 @@ set_index_for_multi_value_property (TrackerDBInterface  *iface,
                         field_name);
 
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "CREATE INDEX \"%s_%s_ID\" ON \"%s_%s\" (ID)",
+                                                   "CREATE INDEX \"%s\".\"%s_%s_ID\" ON \"%s\".\"%s_%s\" 
(ID)",
+                                                   database,
                                                    service_name,
                                                    field_name,
+                                                   database,
                                                    service_name,
                                                    field_name);
 
@@ -343,9 +356,11 @@ set_index_for_multi_value_property (TrackerDBInterface  *iface,
                         expr);
 
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "CREATE UNIQUE INDEX \"%s_%s_ID_ID\" ON \"%s_%s\" (%s, 
ID)",
+                                                   "CREATE UNIQUE INDEX \"%s\".\"%s_%s_ID_ID\" ON 
\"%s\".\"%s_%s\" (%s, ID)",
+                                                   database,
                                                    service_name,
                                                    field_name,
+                                                   database,
                                                    service_name,
                                                    field_name,
                                                    expr);
@@ -364,9 +379,11 @@ set_index_for_multi_value_property (TrackerDBInterface  *iface,
                         expr);
 
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "CREATE UNIQUE INDEX \"%s_%s_ID_ID\" ON \"%s_%s\" (ID, 
%s)",
+                                                   "CREATE UNIQUE INDEX \"%s\".\"%s_%s_ID_ID\" ON 
\"%s\".\"%s_%s\" (ID, %s)",
+                                                   database,
                                                    service_name,
                                                    field_name,
+                                                   database,
                                                    service_name,
                                                    field_name,
                                                    expr);
@@ -533,10 +550,11 @@ check_range_conversion_is_allowed (TrackerDataManager  *manager,
 }
 
 static void
-fix_indexed (TrackerDataManager  *manager,
-             TrackerProperty     *property,
-             gboolean             recreate,
-             GError             **error)
+fix_indexed_on_db (TrackerDataManager  *manager,
+                   const gchar         *database,
+                   TrackerProperty     *property,
+                   gboolean             recreate,
+                   GError             **error)
 {
        GError *internal_error = NULL;
        TrackerDBInterface *iface;
@@ -553,7 +571,7 @@ fix_indexed (TrackerDataManager  *manager,
        datetime = tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_DATETIME;
 
        if (tracker_property_get_multiple_values (property)) {
-               set_index_for_multi_value_property (iface, service_name, field_name,
+               set_index_for_multi_value_property (iface, database, service_name, field_name,
                                                    tracker_property_get_indexed (property),
                                                    recreate,
                                                    datetime,
@@ -564,12 +582,12 @@ fix_indexed (TrackerDataManager  *manager,
 
                secondary_index = tracker_property_get_secondary_index (property);
                if (secondary_index == NULL) {
-                       set_index_for_single_value_property (iface, service_name, field_name,
+                       set_index_for_single_value_property (iface, database, service_name, field_name,
                                                             recreate && tracker_property_get_indexed 
(property),
                                                             datetime,
                                                             &internal_error);
                } else {
-                       set_secondary_index_for_single_value_property (iface, service_name, field_name,
+                       set_secondary_index_for_single_value_property (iface, database, service_name, 
field_name,
                                                                       tracker_property_get_name 
(secondary_index),
                                                                       recreate && 
tracker_property_get_indexed (property),
                                                                       &internal_error);
@@ -579,6 +597,7 @@ fix_indexed (TrackerDataManager  *manager,
                domain_index_classes = tracker_property_get_domain_indexes (property);
                while (!internal_error && domain_index_classes && *domain_index_classes) {
                        set_index_for_single_value_property (iface,
+                                                            database,
                                                             tracker_class_get_name (*domain_index_classes),
                                                             field_name,
                                                             recreate,
@@ -593,6 +612,36 @@ fix_indexed (TrackerDataManager  *manager,
        }
 }
 
+static void
+fix_indexed (TrackerDataManager  *manager,
+             TrackerProperty     *property,
+             gboolean             recreate,
+             GError             **error)
+{
+       TrackerDBInterface *iface;
+       GHashTable *graphs;
+       GHashTableIter iter;
+       GError *internal_error = NULL;
+       gpointer value;
+
+       iface = tracker_data_manager_get_writable_db_interface (manager);
+       graphs = tracker_data_manager_get_graphs (manager, iface, &internal_error);
+       if (internal_error) {
+               g_propagate_error (error, internal_error);
+               return;
+       }
+
+       g_hash_table_iter_init (&iter, graphs);
+
+       while (g_hash_table_iter_next (&iter, &value, NULL)) {
+               fix_indexed_on_db (manager, value, property, recreate,
+                                  &internal_error);
+               if (internal_error) {
+                       g_propagate_error (error, internal_error);
+                       break;
+               }
+       }
+}
 
 static void
 tracker_data_ontology_load_statement (TrackerDataManager  *manager,
@@ -2457,6 +2506,7 @@ range_change_for (TrackerProperty *property,
 static void
 create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                                            TrackerProperty    *property,
+                                           const gchar        *database,
                                            const gchar        *service_name,
                                            TrackerClass       *service,
                                            const gchar       **sql_type_for_single_value,
@@ -2516,7 +2566,8 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                                         service_name, field_name);
 
                                tracker_db_interface_execute_query (iface, &internal_error,
-                                                                   "DROP INDEX IF EXISTS \"%s_%s_ID\"",
+                                                                   "DROP INDEX IF EXISTS 
\"%s\".\"%s_%s_ID\"",
+                                                                   database,
                                                                    service_name,
                                                                    field_name);
 
@@ -2526,8 +2577,9 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                                }
 
                                tracker_db_interface_execute_query (iface, &internal_error,
-                                                                   "ALTER TABLE \"%s_%s\" RENAME TO 
\"%s_%s_TEMP\"",
-                                                                   service_name, field_name, service_name, 
field_name);
+                                                                   "ALTER TABLE \"%s\".\"%s_%s\" RENAME TO 
\"%s\".\"%s_%s_TEMP\"",
+                                                                   database, service_name, field_name,
+                                                                   database, service_name, field_name);
 
                                if (internal_error) {
                                        g_propagate_error (error, internal_error);
@@ -2536,21 +2588,24 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                        } else if (in_change && tracker_property_get_cardinality_changed (property)) {
                                /* We should be dropping all indices colliding with the new table name */
                                tracker_db_interface_execute_query (iface, &internal_error,
-                                                                   "DROP INDEX IF EXISTS \"%s_%s\"",
+                                                                   "DROP INDEX IF EXISTS \"%s\".\"%s_%s\"",
+                                                                   database,
                                                                    service_name,
                                                                    field_name);
                        }
 
                        sql = g_string_new ("");
-                       g_string_append_printf (sql, "CREATE TABLE \"%s_%s\" ("
-                                                    "ID INTEGER NOT NULL, "
-                                                    "\"%s\" %s NOT NULL, "
-                                                    "\"%s:graph\" INTEGER",
-                                                    service_name,
-                                                    field_name,
-                                                    field_name,
-                                                    sql_type,
-                                                    field_name);
+                       g_string_append_printf (sql,
+                                               "CREATE TABLE \"%s\".\"%s_%s\" ("
+                                               "ID INTEGER NOT NULL, "
+                                               "\"%s\" %s NOT NULL, "
+                                               "\"%s:graph\" INTEGER",
+                                               database,
+                                               service_name,
+                                               field_name,
+                                               field_name,
+                                               sql_type,
+                                               field_name);
 
                        if (in_change && !tracker_property_get_is_new (property)) {
                                in_col_sql = g_string_new ("ID");
@@ -2571,7 +2626,7 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                        if (tracker_property_get_indexed (property)) {
                                /* use different UNIQUE index for properties whose
                                 * value should be indexed to minimize index size */
-                               set_index_for_multi_value_property (iface, service_name, field_name, TRUE, 
TRUE,
+                               set_index_for_multi_value_property (iface, database, service_name, 
field_name, TRUE, TRUE,
                                                                    datetime,
                                                                    &internal_error);
                                if (internal_error) {
@@ -2579,7 +2634,7 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                                        goto error_out;
                                }
                        } else {
-                               set_index_for_multi_value_property (iface, service_name, field_name, FALSE, 
TRUE,
+                               set_index_for_multi_value_property (iface, database, service_name, 
field_name, FALSE, TRUE,
                                                                    datetime,
                                                                    &internal_error);
                                /* we still have to include the property value in
@@ -2594,10 +2649,10 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                            !tracker_property_get_cardinality_changed (property) && in_col_sql && 
sel_col_sql) {
                                gchar *query;
 
-                               query = g_strdup_printf ("INSERT INTO \"%s_%s\"(%s) "
-                                                        "SELECT %s FROM \"%s_%s_TEMP\"",
-                                                        service_name, field_name, in_col_sql->str,
-                                                        sel_col_sql->str, service_name, field_name);
+                               query = g_strdup_printf ("INSERT INTO \"%s\".\"%s_%s\"(%s) "
+                                                        "SELECT %s FROM \"%s\".\"%s_%s_TEMP\"",
+                                                        database, service_name, field_name, in_col_sql->str,
+                                                        sel_col_sql->str, database, service_name, 
field_name);
 
                                tracker_db_interface_execute_query (iface, &internal_error, "%s", query);
 
@@ -2608,8 +2663,8 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                                }
 
                                g_free (query);
-                               tracker_db_interface_execute_query (iface, &internal_error, "DROP TABLE 
\"%s_%s_TEMP\"",
-                                                                   service_name, field_name);
+                               tracker_db_interface_execute_query (iface, &internal_error, "DROP TABLE 
\"%s\".\"%s_%s_TEMP\"",
+                                                                   database, service_name, field_name);
 
                                if (internal_error) {
                                        g_propagate_error (error, internal_error);
@@ -2621,7 +2676,7 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                        if (tracker_property_get_indexed (property)) {
                                /* use different UNIQUE index for properties whose
                                 * value should be indexed to minimize index size */
-                               set_index_for_multi_value_property (iface, service_name, field_name, TRUE, 
TRUE,
+                               set_index_for_multi_value_property (iface, database, service_name, 
field_name, TRUE, TRUE,
                                                                    datetime,
                                                                    &internal_error);
                                if (internal_error) {
@@ -2629,7 +2684,7 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
                                        goto error_out;
                                }
                        } else {
-                               set_index_for_multi_value_property (iface, service_name, field_name, FALSE, 
TRUE,
+                               set_index_for_multi_value_property (iface, database, service_name, 
field_name, FALSE, TRUE,
                                                                    datetime,
                                                                    &internal_error);
                                if (internal_error) {
@@ -2676,6 +2731,7 @@ is_a_domain_index (TrackerProperty **domain_indexes, TrackerProperty *property)
 
 static void
 copy_from_domain_to_domain_index (TrackerDBInterface  *iface,
+                                  const gchar         *database,
                                   TrackerProperty     *domain_index,
                                   const gchar         *column_name,
                                   const gchar         *column_suffix,
@@ -2691,14 +2747,16 @@ copy_from_domain_to_domain_index (TrackerDBInterface  *iface,
        source_name = tracker_class_get_name (source_domain);
        dest_name = tracker_class_get_name (dest_domain);
 
-       query = g_strdup_printf ("UPDATE \"%s\" SET \"%s%s\"=("
-                                "SELECT \"%s%s\" FROM \"%s\" "
+       query = g_strdup_printf ("UPDATE \"%s\".\"%s\" SET \"%s%s\"=("
+                                "SELECT \"%s%s\" FROM \"%s\".\"%s\" "
                                 "WHERE \"%s\".ID = \"%s\".ID)",
+                                database,
                                 dest_name,
                                 column_name,
                                 column_suffix ? column_suffix : "",
                                 column_name,
                                 column_suffix ? column_suffix : "",
+                                database,
                                 source_name,
                                 source_name,
                                 dest_name);
@@ -2909,6 +2967,7 @@ create_table_triggers (TrackerDataManager  *manager,
 static void
 create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                    TrackerDBInterface  *iface,
+                                   const gchar         *database,
                                    TrackerClass        *service,
                                    gboolean             in_update,
                                    gboolean             in_change,
@@ -2939,8 +2998,8 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
        if (in_change && !tracker_class_get_is_new (service)) {
                g_debug ("Rename: ALTER TABLE \"%s\" RENAME TO \"%s_TEMP\"", service_name, service_name);
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "ALTER TABLE \"%s\" RENAME TO \"%s_TEMP\"",
-                                                   service_name, service_name);
+                                                   "ALTER TABLE \"%s\".\"%s\" RENAME TO \"%s\".\"%s_TEMP\"",
+                                                   database, service_name, database, service_name);
                in_col_sql = g_string_new ("ID");
                sel_col_sql = g_string_new ("ID");
                if (internal_error) {
@@ -2954,7 +3013,8 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                        g_debug ("Altering database with new class '%s' (create)", service_name);
                in_alter = FALSE;
                create_sql = g_string_new ("");
-               g_string_append_printf (create_sql, "CREATE TABLE \"%s\" (ID INTEGER NOT NULL PRIMARY KEY", 
service_name);
+               g_string_append_printf (create_sql, "CREATE TABLE \"%s\".\"%s\" (ID INTEGER NOT NULL PRIMARY 
KEY",
+                                       database, service_name);
        }
 
        properties = tracker_ontologies_get_properties (manager->ontologies, &n_props);
@@ -2973,6 +3033,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                        const gchar *field_name;
 
                        create_decomposed_metadata_property_table (iface, property,
+                                                                  database,
                                                                   service_name,
                                                                   service,
                                                                   &sql_type_for_single_value,
@@ -3046,7 +3107,8 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                        class_properties = g_slist_prepend (class_properties, property);
 
                                        alter_sql = g_string_new ("ALTER TABLE ");
-                                       g_string_append_printf (alter_sql, "\"%s\" ADD COLUMN \"%s\" %s",
+                                       g_string_append_printf (alter_sql, "\"%s\".\"%s\" ADD COLUMN \"%s\" 
%s",
+                                                               database,
                                                                service_name,
                                                                field_name,
                                                                sql_type_for_single_value);
@@ -3072,7 +3134,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                                g_propagate_error (error, internal_error);
                                                goto error_out;
                                        } else if (is_domain_index) {
-                                               copy_from_domain_to_domain_index (iface, property,
+                                               copy_from_domain_to_domain_index (iface, database, property,
                                                                                  field_name, NULL,
                                                                                  service,
                                                                                  &internal_error);
@@ -3083,7 +3145,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                                }
 
                                                /* This is implicit for all domain-specific-indices */
-                                               set_index_for_single_value_property (iface, service_name,
+                                               set_index_for_single_value_property (iface, database, 
service_name,
                                                                                     field_name, TRUE,
                                                                                     datetime,
                                                                                     &internal_error);
@@ -3097,7 +3159,8 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                        g_string_free (alter_sql, TRUE);
 
                                        alter_sql = g_string_new ("ALTER TABLE ");
-                                       g_string_append_printf (alter_sql, "\"%s\" ADD COLUMN \"%s:graph\" 
INTEGER",
+                                       g_string_append_printf (alter_sql, "\"%s\".\"%s\" ADD COLUMN 
\"%s:graph\" INTEGER",
+                                                               database,
                                                                service_name,
                                                                field_name);
                                        g_debug ("Altering: '%s'", alter_sql->str);
@@ -3108,7 +3171,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                                g_propagate_error (error, internal_error);
                                                goto error_out;
                                        } else if (is_domain_index) {
-                                               copy_from_domain_to_domain_index (iface, property,
+                                               copy_from_domain_to_domain_index (iface, database, property,
                                                                                  field_name, ":graph",
                                                                                  service,
                                                                                  &internal_error);
@@ -3161,7 +3224,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
 
                        secondary_index = tracker_property_get_secondary_index (field);
                        if (secondary_index == NULL) {
-                               set_index_for_single_value_property (iface, service_name,
+                               set_index_for_single_value_property (iface, database, service_name,
                                                                     field_name, TRUE,
                                                                     datetime,
                                                                     &internal_error);
@@ -3170,7 +3233,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                                        goto error_out;
                                }
                        } else {
-                               set_secondary_index_for_single_value_property (iface, service_name, 
field_name,
+                               set_secondary_index_for_single_value_property (iface, database, service_name, 
field_name,
                                                                               tracker_property_get_name 
(secondary_index),
                                                                               TRUE, &internal_error);
                                if (internal_error) {
@@ -3185,10 +3248,10 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                guint i;
                gchar *query;
 
-               query = g_strdup_printf ("INSERT INTO \"%s\"(%s) "
-                                        "SELECT %s FROM \"%s_TEMP\"",
-                                        service_name, in_col_sql->str,
-                                        sel_col_sql->str, service_name);
+               query = g_strdup_printf ("INSERT INTO \"%s\".\"%s\"(%s) "
+                                        "SELECT %s FROM \"%s\".\"%s_TEMP\"",
+                                        database, service_name, in_col_sql->str,
+                                        sel_col_sql->str, database, service_name);
 
                g_debug ("Copy: %s", query);
 
@@ -3216,12 +3279,12 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
 
                                 /* Columns happen to be the same for decomposed multi-value and single value 
atm */
 
-                               query = g_strdup_printf ("INSERT INTO \"%s_%s\"(%s) "
-                                                        "SELECT %s FROM \"%s_TEMP\" "
+                               query = g_strdup_printf ("INSERT INTO \"%s\".\"%s_%s\"(%s) "
+                                                        "SELECT %s FROM \"%s\".\"%s_TEMP\" "
                                                         "WHERE ID IS NOT NULL AND \"%s\" IS NOT NULL",
-                                                        service_name, field_name,
+                                                        database, service_name, field_name,
                                                         n_in_col_sql->str, n_sel_col_sql->str,
-                                                        service_name, field_name);
+                                                        database, service_name, field_name);
 
                                g_string_free (n_in_col_sql, TRUE);
                                g_string_free (n_sel_col_sql, TRUE);
@@ -3241,7 +3304,8 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
 
                g_debug ("Rename (drop): DROP TABLE \"%s_TEMP\"", service_name);
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "DROP TABLE \"%s_TEMP\"", service_name);
+                                                   "DROP TABLE \"%s\".\"%s_TEMP\"",
+                                                   database, service_name);
 
                if (internal_error) {
                        g_propagate_error (error, internal_error);
@@ -3266,7 +3330,7 @@ create_decomposed_metadata_tables (TrackerDataManager  *manager,
                guint i;
                for (i = 0; i < copy_schedule->len; i++) {
                        ScheduleCopy *sched = g_ptr_array_index (copy_schedule, i);
-                       copy_from_domain_to_domain_index (iface, sched->prop,
+                       copy_from_domain_to_domain_index (iface, database, sched->prop,
                                                          sched->field_name, sched->suffix,
                                                          service,
                                                          &internal_error);
@@ -3376,9 +3440,10 @@ create_base_tables (TrackerDataManager  *manager,
        return TRUE;
 }
 
-static void
+static gboolean
 tracker_data_ontology_setup_db (TrackerDataManager  *manager,
                                 TrackerDBInterface  *iface,
+                                const gchar         *database,
                                 gboolean             in_update,
                                 GError             **error)
 {
@@ -3393,15 +3458,17 @@ tracker_data_ontology_setup_db (TrackerDataManager  *manager,
                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,
+               create_decomposed_metadata_tables (manager, iface, database, classes[i], in_update,
                                                   tracker_class_get_db_schema_changed (classes[i]),
                                                   &internal_error);
 
                if (internal_error) {
                        g_propagate_error (error, internal_error);
-                       return;
+                       return FALSE;
                }
        }
+
+       return TRUE;
 }
 
 static void
@@ -3944,7 +4011,7 @@ tracker_data_manager_initable_init (GInitable     *initable,
                        return FALSE;
                }
 
-               tracker_data_ontology_setup_db (manager, iface, FALSE,
+               tracker_data_ontology_setup_db (manager, iface, "main", FALSE,
                                                &internal_error);
 
                if (!internal_error) {
@@ -4302,7 +4369,7 @@ tracker_data_manager_initable_init (GInitable     *initable,
                                        tracker_db_interface_sqlite_fts_delete_table (iface);
 #endif
 
-                               tracker_data_ontology_setup_db (manager, iface, TRUE,
+                               tracker_data_ontology_setup_db (manager, iface, "main", TRUE,
                                                                &ontology_error);
 
                                if (!ontology_error) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]