summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-01-22 13:37:44 +0000
committerErik Johnston <erik@matrix.org>2015-01-22 13:37:44 +0000
commit33d2d82f6d2dae17038965e86f56cb1e09b36d6c (patch)
treea5e3a92f5a10d278e889d86be6936d5f65079a4b
parentMove experiments, graph and cmdclient into contrib (diff)
downloadsynapse-33d2d82f6d2dae17038965e86f56cb1e09b36d6c.tar.xz
In get_state_groups, get the full event json rather than just the event_ids so we don't have to do so many db queries
-rw-r--r--synapse/storage/state.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/synapse/storage/state.py b/synapse/storage/state.py
index 71db16d0e5..e94c8fcd18 100644
--- a/synapse/storage/state.py
+++ b/synapse/storage/state.py
@@ -60,14 +60,19 @@ class StateStore(SQLBaseStore):
 
             res = {}
             for group in groups:
-                state_ids = self._simple_select_onecol_txn(
-                    txn,
-                    table="state_groups_state",
-                    keyvalues={"state_group": group},
-                    retcol="event_id",
+                sql = (
+                    "SELECT internal_metadata, json, r.event_id "
+                    "FROM event_json as e "
+                    "INNER JOIN state_groups_state as s "
+                    "ON e.event_id = s.event_id "
+                    "LEFT JOIN redactions as r ON e.event_id = r.redacts "
+                    "WHERE s.state_group = ?"
                 )
 
-                state = self._get_events_txn(txn, state_ids)
+                txn.execute(sql, (group,))
+                rows = txn.fetchall()
+
+                state = [self._get_event_from_row_txn(txn, *r) for r in rows]
 
                 res[group] = state