core (sqlite storage): do explicit delete to profile linked tables for deleteProfile

This commit is contained in:
Goffi 2015-11-30 20:42:14 +01:00
commit 1a16f085d0

View file

@ -174,9 +174,16 @@ class SqliteStorage(object):
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)