[tracker] libtracker-data: Avoid doubly creating resource triggers



commit 019761e203eb60a60a5a6aea45d0d250e07fb546
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Aug 7 17:49:01 2017 +0200

    libtracker-data: Avoid doubly creating resource triggers
    
    This code is run on table updates, in which case the triggers already
    correctly exist. Ensure the trigger creation won't fail if it already
    exists.

 src/libtracker-data/tracker-data-manager.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 4aa7df7..1375c1f 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -2918,7 +2918,7 @@ create_triggers_on_rowid (TrackerDBInterface  *iface,
        }
 
        tracker_db_interface_execute_query (iface, &internal_error,
-                                           "CREATE TRIGGER \"trigger_insert_%s\" "
+                                           "CREATE TRIGGER IF NOT EXISTS \"trigger_insert_%s\" "
                                            "AFTER INSERT ON \"%s\" "
                                            "FOR EACH ROW BEGIN "
                                            "UPDATE Resource SET Refcount = Refcount + 1 WHERE Resource.rowid 
= NEW.ID;"
@@ -2931,7 +2931,7 @@ create_triggers_on_rowid (TrackerDBInterface  *iface,
        }
 
        tracker_db_interface_execute_query (iface, &internal_error,
-                                           "CREATE TRIGGER \"trigger_delete_%s\" "
+                                           "CREATE TRIGGER IF NOT EXISTS \"trigger_delete_%s\" "
                                            "AFTER DELETE ON \"%s\" "
                                            "FOR EACH ROW BEGIN "
                                            "UPDATE Resource SET Refcount = Refcount - 1 WHERE Resource.rowid 
= OLD.ID;"
@@ -2993,7 +2993,7 @@ create_table_triggers (TrackerDataManager  *manager,
                }
 
                tracker_db_interface_execute_query (iface, &internal_error,
-                                                   "CREATE TRIGGER \"trigger_update_%s_%s\" "
+                                                   "CREATE TRIGGER IF NOT EXISTS \"trigger_update_%s_%s\" "
                                                    "AFTER UPDATE OF \"%s\" ON \"%s\" "
                                                    "FOR EACH ROW BEGIN "
                                                    "UPDATE Resource SET Refcount = Refcount + 1 WHERE 
Resource.rowid = NEW.\"%s\";"


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