2 files changed, 8 insertions, 3 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index 4e8a54c8f7..0d57073aa4 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -263,13 +263,17 @@ class DataStore(RoomMemberStore, RoomStore,
@defer.inlineCallbacks
def get_current_state(self, room_id, event_type=None, state_key=""):
+ del_sql = (
+ "SELECT event_id FROM deletions WHERE deletes = e.event_id"
+ )
+
sql = (
"SELECT e.*, (%(deleted)s) AS deleted FROM events as e "
"INNER JOIN current_state_events as c ON e.event_id = c.event_id "
"INNER JOIN state_events as s ON e.event_id = s.event_id "
"WHERE c.room_id = ? "
) % {
- "deleted": "e.event_id IN (SELECT deletes FROM deletions)",
+ "deleted": del_sql,
}
if event_type:
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py
index d64119a473..444e7628d1 100644
--- a/synapse/storage/_base.py
+++ b/synapse/storage/_base.py
@@ -403,9 +403,10 @@ class SQLBaseStore(object):
return events
def _has_been_deleted_txn(self, txn, event):
- sql = "SELECT * FROM deletions WHERE deletes = ?"
+ sql = "SELECT event_id FROM deletions WHERE deletes = ?"
txn.execute(sql, (event.event_id,))
- return len(txn.fetchall()) > 0
+ result = txn.fetchone()
+ return result[0] if result else None
class Table(object):
|