From 01f0c0e8215e3fa8fb41959c1ff1920c9bd40d8b Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Fri, 1 Jun 2018 17:19:38 +0100 Subject: Postgres fast update --- synapse/storage/events.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/synapse/storage/events.py b/synapse/storage/events.py index 2427d3b4b2..cd6aecda67 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py @@ -1878,7 +1878,13 @@ class EventsStore(EventsWorkerStore): def reindex_chunks_txn(txn): txn.execute(""" - SELECT stream_ordering, room_id, event_id FROM events + SELECT stream_ordering, room_id, event_id, + ( + SELECT COALESCE(array_agg(prev_event_id), ARRAY[]::TEXT[]) + FROM event_edges AS eg + WHERE NOT is_state AND eg.event_id = e.event_id + ) AS prev_events + FROM events AS e WHERE stream_ordering < ? AND outlier = ? AND chunk_id IS NULL ORDER BY stream_ordering DESC LIMIT ? @@ -1887,17 +1893,7 @@ class EventsStore(EventsWorkerStore): rows = txn.fetchall() stream_ordering = up_to_stream_id - for stream_ordering, room_id, event_id in rows: - prev_events = self._simple_select_onecol_txn( - txn, - table="event_edges", - keyvalues={ - "event_id": event_id, - "is_state": False, - }, - retcol="prev_event_id", - ) - + for stream_ordering, room_id, event_id, prev_events in rows: chunk_id, topo = self._compute_chunk_id_txn( txn, room_id, event_id, prev_events, ) -- cgit 1.5.1