diff options
author | Erik Johnston <erik@matrix.org> | 2019-07-26 10:07:21 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-07-26 10:11:36 +0100 |
commit | 14c24c9037a7be46f9f79e85d2ce303ada4085e9 (patch) | |
tree | c22a50e209dab29d916fa578f6d99d53140bd83d /synapse/storage | |
parent | Newsfile (diff) | |
download | synapse-14c24c9037a7be46f9f79e85d2ce303ada4085e9.tar.xz |
Fix room summary when rejected events are in state
Annoyingly, `current_state_events` table can include rejected events, in which case the membership column will be null. To work around this lets just always filter out null membership for now.
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/roommember.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py index bfb834ccca..d0fe3a7f78 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py @@ -156,9 +156,12 @@ class RoomMemberWorkerStore(EventsWorkerStore): # then we can avoid a join, which is a Very Good Thing given how # frequently this function gets called. if self._current_state_events_membership_up_to_date: + # Note, rejected events will have a null membership field, so + # we we manually filter them out. sql = """ SELECT count(*), membership FROM current_state_events WHERE type = 'm.room.member' AND room_id = ? + AND membership IS NOT NULL GROUP BY membership """ else: @@ -180,10 +183,13 @@ class RoomMemberWorkerStore(EventsWorkerStore): # we order by membership and then fairly arbitrarily by event_id so # heroes are consistent if self._current_state_events_membership_up_to_date: + # Note, rejected events will have a null membership field, so + # we we manually filter them out. sql = """ SELECT state_key, membership, event_id FROM current_state_events WHERE type = 'm.room.member' AND room_id = ? + AND membership IS NOT NULL ORDER BY CASE membership WHEN ? THEN 1 WHEN ? THEN 2 ELSE 3 END ASC, event_id ASC |