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 | |
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.
-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 |