diff options
author | reivilibre <oliverw@matrix.org> | 2022-08-17 18:08:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-17 18:08:23 +0000 |
commit | 8bdf2bd31ef003f0e89a588d8977d4f689ef6856 (patch) | |
tree | f8f7e3343dfad7d041dd282ad3e0a7712b90b2e0 /synapse/storage | |
parent | A first pass at pruning the Synapse README (#13491) (diff) | |
download | synapse-8bdf2bd31ef003f0e89a588d8977d4f689ef6856.tar.xz |
Fix a bug in the `/event_reports` Admin API which meant that the total count could be larger than the number of results you can actually query for. (#13525)
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/databases/main/room.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/synapse/storage/databases/main/room.py b/synapse/storage/databases/main/room.py index 0f1f0d11ea..b7d4baa6bb 100644 --- a/synapse/storage/databases/main/room.py +++ b/synapse/storage/databases/main/room.py @@ -2001,9 +2001,15 @@ class RoomStore(RoomBackgroundUpdateStore, RoomWorkerStore): where_clause = "WHERE " + " AND ".join(filters) if len(filters) > 0 else "" + # We join on room_stats_state despite not using any columns from it + # because the join can influence the number of rows returned; + # e.g. a room that doesn't have state, maybe because it was deleted. + # The query returning the total count should be consistent with + # the query returning the results. sql = """ SELECT COUNT(*) as total_event_reports FROM event_reports AS er + JOIN room_stats_state ON room_stats_state.room_id = er.room_id {} """.format( where_clause |