forked from MirrorHub/synapse
Fix imsync's SELECT query to only find the rooms I'm actually joined in, not every room I have ever joined
This commit is contained in:
parent
5c88e57555
commit
3c532314ec
1 changed files with 5 additions and 2 deletions
|
@ -111,9 +111,12 @@ class RoomMemberStore(SQLBaseStore):
|
|||
for membership in membership_list:
|
||||
args.append(membership)
|
||||
|
||||
# sub-select finds the row ID for the most recent (i.e. current)
|
||||
# state change of this user per room, then the outer select finds those
|
||||
query = ("SELECT room_id, membership FROM room_memberships"
|
||||
+ " WHERE user_id=? AND " + where_membership
|
||||
+ " GROUP BY room_id ORDER BY id DESC")
|
||||
+ " WHERE id IN (SELECT MAX(id) FROM room_memberships"
|
||||
+ " WHERE user_id=? GROUP BY room_id)"
|
||||
+ " AND " + where_membership)
|
||||
return self._execute(
|
||||
self.cursor_to_dict, query, *args
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue