summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libtracker-data/tracker-data-manager.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 6dbe664f4..06012b427 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3373,10 +3373,6 @@ create_decomposed_metadata_tables (TrackerDataManager *manager,
g_debug ("Creating: '%s'", create_sql->str);
tracker_db_interface_execute_query (iface, &internal_error,
"%s", create_sql->str);
-
- if (!internal_error)
- create_table_triggers (manager, iface, service, &internal_error);
-
if (internal_error) {
g_propagate_error (error, internal_error);
goto error_out;
@@ -3488,6 +3484,19 @@ create_decomposed_metadata_tables (TrackerDataManager *manager,
}
}
+ if (!in_update || in_change || tracker_class_get_is_new (service)) {
+ /* FIXME: We are trusting object refcount will stay intact across
+ * ontology changes. One situation where this is not true are
+ * removal or properties with rdfs:Resource range.
+ */
+ create_table_triggers (manager, iface, service, &internal_error);
+
+ if (internal_error) {
+ g_propagate_error (error, internal_error);
+ goto error_out;
+ }
+ }
+
if (copy_schedule) {
guint i;
for (i = 0; i < copy_schedule->len; i++) {