forked from MirrorHub/synapse
Remove join when calculating room summaries.
This commit is contained in:
parent
62921fb53e
commit
0c4a99607e
1 changed files with 21 additions and 13 deletions
|
@ -179,17 +179,25 @@ class RoomMemberWorkerStore(EventsWorkerStore):
|
||||||
|
|
||||||
# we order by membership and then fairly arbitrarily by event_id so
|
# we order by membership and then fairly arbitrarily by event_id so
|
||||||
# heroes are consistent
|
# heroes are consistent
|
||||||
|
if self._current_state_events_membership_up_to_date:
|
||||||
sql = """
|
sql = """
|
||||||
SELECT m.user_id, m.membership, m.event_id
|
SELECT state_key, membership, event_id
|
||||||
|
FROM current_state_events
|
||||||
|
WHERE type = 'm.room.member' AND room_id = ?
|
||||||
|
ORDER BY
|
||||||
|
CASE membership WHEN ? THEN 1 WHEN ? THEN 2 ELSE 3 END ASC,
|
||||||
|
event_id ASC
|
||||||
|
LIMIT ?
|
||||||
|
"""
|
||||||
|
else:
|
||||||
|
sql = """
|
||||||
|
SELECT c.state_key, m.membership, c.event_id
|
||||||
FROM room_memberships as m
|
FROM room_memberships as m
|
||||||
INNER JOIN current_state_events as c
|
INNER JOIN current_state_events as c USING (room_id, event_id)
|
||||||
ON m.event_id = c.event_id
|
|
||||||
AND m.room_id = c.room_id
|
|
||||||
AND m.user_id = c.state_key
|
|
||||||
WHERE c.type = 'm.room.member' AND c.room_id = ?
|
WHERE c.type = 'm.room.member' AND c.room_id = ?
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE m.membership WHEN ? THEN 1 WHEN ? THEN 2 ELSE 3 END ASC,
|
CASE m.membership WHEN ? THEN 1 WHEN ? THEN 2 ELSE 3 END ASC,
|
||||||
m.event_id ASC
|
c.event_id ASC
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue