diff options
author | Erik Johnston <erik@matrix.org> | 2017-05-25 17:08:41 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2017-05-25 17:24:44 +0100 |
commit | dfbda5e0250adfa762f5491c7efb2666866db034 (patch) | |
tree | 0004c9e9e0bb8d7e8269eec3ca366731bd5a4390 /synapse/storage/state.py | |
parent | Don't return weird prev_group (diff) | |
download | synapse-dfbda5e0250adfa762f5491c7efb2666866db034.tar.xz |
Faster cache for get_joined_hosts
Diffstat (limited to 'synapse/storage/state.py')
-rw-r--r-- | synapse/storage/state.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/synapse/storage/state.py b/synapse/storage/state.py index a7c3d401d4..01474ff5ff 100644 --- a/synapse/storage/state.py +++ b/synapse/storage/state.py @@ -98,6 +98,39 @@ class StateStore(SQLBaseStore): _get_current_state_ids_txn, ) + def get_state_group_delta(self, state_group): + def _get_state_group_delta_txn(txn): + prev_group = self._simple_select_one_onecol_txn( + txn, + table="state_group_edges", + keyvalues={ + "state_group": state_group, + }, + retcol="prev_state_group", + allow_none=True, + ) + + if not prev_group: + return None, None + + delta_ids = self._simple_select_list_txn( + txn, + table="state_groups_state", + keyvalues={ + "state_group": state_group, + }, + retcols=("type", "state_key", "event_id",) + ) + + return prev_group, { + (row["type"], row["state_key"]): row["event_id"] + for row in delta_ids + } + return self.runInteraction( + "get_state_group_delta", + _get_state_group_delta_txn, + ) + @defer.inlineCallbacks def get_state_groups_ids(self, room_id, event_ids): if not event_ids: |