From 7d9a84a445729e94b5f5aa445965b4e164442c7c Mon Sep 17 00:00:00 2001
From: Erik Johnston <erik@matrix.org>
Date: Wed, 24 Sep 2014 14:18:08 +0100
Subject: [PATCH] Make deleting deletes not undelete

---
 synapse/storage/__init__.py | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index 0d57073aa4..accb4359bd 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -246,20 +246,10 @@ class DataStore(RoomMemberStore, RoomStore,
             )
 
     def _store_deletion(self, txn, event):
-        event_id = event.event_id
-        deletes = event.deletes
-
-        # We check if this new delete deletes an old delete or has been
-        # deleted by a previous delete that we received out of order.
-        sql = "SELECT * FROM deletions WHERE event_id = ? OR deletes = ?"
-        txn.execute(sql, (deletes, event_id))
-
-        if txn.fetchall():
-            sql = "DELETE FROM deletions WHERE event_id = ? OR deletes = ?"
-            txn.execute(sql, (deletes, event_id, ))
-        else:
-            sql = "INSERT INTO deletions (event_id, deletes) VALUES (?,?)"
-            txn.execute(sql, (event_id, deletes))
+        txn.execute(
+            "INSERT INTO deletions (event_id, deletes) VALUES (?,?) OR IGNORE",
+            (event.event_id, event.deletes)
+        )
 
     @defer.inlineCallbacks
     def get_current_state(self, room_id, event_type=None, state_key=""):
-- 
GitLab