[epiphany/history-rewrite: 36/45] ephy-history-service: Enable foreign keys in the database connection



commit 7e5dbba84869e4ba9b5dea9834bfa9c249a31356
Author: Claudio Saavedra <csaavedra igalia com>
Date:   Thu Jul 21 12:22:28 2011 +0300

    ephy-history-service: Enable foreign keys in the database connection
    
    We will use them to remove visits history automatically when removing
    urls from the history.

 lib/history/ephy-history-service.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/lib/history/ephy-history-service.c b/lib/history/ephy-history-service.c
index fccda0e..d60c347 100644
--- a/lib/history/ephy-history-service.c
+++ b/lib/history/ephy-history-service.c
@@ -216,6 +216,24 @@ ephy_history_service_commit (EphyHistoryService *self)
   return FALSE;
 }
 
+static void
+ephy_history_service_enable_foreign_keys (EphyHistoryService *self)
+{
+  EphyHistoryServicePrivate *priv = EPHY_HISTORY_SERVICE (self)->priv;
+  GError *error = NULL;
+
+  if (NULL == priv->history_database)
+    return;
+
+  ephy_sqlite_connection_execute (priv->history_database,
+                                  "PRAGMA foreign_keys = ON", &error);
+
+  if (error) {
+    g_error ("Could not enable foreign keys pragma: %s", error->message);
+    g_error_free (error);
+  }
+}
+
 void
 ephy_history_service_schedule_commit (EphyHistoryService *self)
 {
@@ -240,6 +258,8 @@ ephy_history_service_open_database_connections (EphyHistoryService *self)
     return FALSE;
   }
 
+  ephy_history_service_enable_foreign_keys (self);
+
   ephy_sqlite_connection_begin_transaction (priv->history_database, &error);
   if (error) {
     g_error ("Could not begin long running transaction in history database: %s", error->message);



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