changeset 1705:3765e10ec52f

core (sqlite storage): do explicit delete to profile linked tables for deleteProfile
author Goffi <goffi@goffi.org>
date Mon, 30 Nov 2015 20:42:14 +0100
parents 292f9c2712f2
children aa60bd58ac23
files src/memory/sqlite.py
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/memory/sqlite.py	Mon Nov 30 20:40:55 2015 +0100
+++ b/src/memory/sqlite.py	Mon Nov 30 20:42:14 2015 +0100
@@ -174,9 +174,16 @@
             return failure
 
         def delete(txn):
-            del self.profiles[name]
+            profile_id = self.profiles.pop(name)
             txn.execute("PRAGMA foreign_keys = ON")
             txn.execute("DELETE FROM profiles WHERE name = ?", (name,))
+            # FIXME: the following queries should be done by the ON DELETE CASCADE
+            #        but it seems they are not, so we explicitly do them by security
+            #        this need more investigation
+            txn.execute("DELETE FROM history WHERE profile_id = ?", (profile_id,))
+            txn.execute("DELETE FROM param_ind WHERE profile_id = ?", (profile_id,))
+            txn.execute("DELETE FROM private_ind WHERE profile_id = ?", (profile_id,))
+            txn.execute("DELETE FROM private_ind_bin WHERE profile_id = ?", (profile_id,))
             return None
 
         d = self.dbpool.runInteraction(delete)