forked from MirrorHub/synapse
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.
This commit is contained in:
parent
c159803067
commit
14c24c9037
1 changed files with 6 additions and 0 deletions
|
@ -156,9 +156,12 @@ class RoomMemberWorkerStore(EventsWorkerStore):
|
||||||
# then we can avoid a join, which is a Very Good Thing given how
|
# then we can avoid a join, which is a Very Good Thing given how
|
||||||
# frequently this function gets called.
|
# frequently this function gets called.
|
||||||
if self._current_state_events_membership_up_to_date:
|
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 = """
|
sql = """
|
||||||
SELECT count(*), membership FROM current_state_events
|
SELECT count(*), membership FROM current_state_events
|
||||||
WHERE type = 'm.room.member' AND room_id = ?
|
WHERE type = 'm.room.member' AND room_id = ?
|
||||||
|
AND membership IS NOT NULL
|
||||||
GROUP BY membership
|
GROUP BY membership
|
||||||
"""
|
"""
|
||||||
else:
|
else:
|
||||||
|
@ -180,10 +183,13 @@ 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:
|
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 = """
|
sql = """
|
||||||
SELECT state_key, membership, event_id
|
SELECT state_key, membership, event_id
|
||||||
FROM current_state_events
|
FROM current_state_events
|
||||||
WHERE type = 'm.room.member' AND room_id = ?
|
WHERE type = 'm.room.member' AND room_id = ?
|
||||||
|
AND membership IS NOT NULL
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE membership WHEN ? THEN 1 WHEN ? THEN 2 ELSE 3 END ASC,
|
CASE membership WHEN ? THEN 1 WHEN ? THEN 2 ELSE 3 END ASC,
|
||||||
event_id ASC
|
event_id ASC
|
||||||
|
|
Loading…
Reference in a new issue