@@ -261,6 +261,16 @@ class StateBackgroundUpdateStore(StateGroupBackgroundUpdateStore):
261
261
STATE_GROUPS_ROOM_INDEX_UPDATE_NAME = "state_groups_room_id_idx"
262
262
STATE_GROUP_EDGES_UNIQUE_INDEX_UPDATE_NAME = "state_group_edges_unique_idx"
263
263
264
+ CURRENT_STATE_EVENTS_STREAM_ORDERING_INDEX_UPDATE_NAME = (
265
+ "current_state_events_stream_ordering_idx"
266
+ )
267
+ ROOM_MEMBERSHIPS_STREAM_ORDERING_INDEX_UPDATE_NAME = (
268
+ "room_memberships_stream_ordering_idx"
269
+ )
270
+ LOCAL_CURRENT_MEMBERSHIP_STREAM_ORDERING_INDEX_UPDATE_NAME = (
271
+ "local_current_membership_stream_ordering_idx"
272
+ )
273
+
264
274
def __init__ (
265
275
self ,
266
276
database : DatabasePool ,
@@ -297,6 +307,27 @@ def __init__(
297
307
replaces_index = "state_group_edges_idx" ,
298
308
)
299
309
310
+ # These indices are needed to validate the foreign key constraint
311
+ # when events are deleted.
312
+ self .db_pool .updates .register_background_index_update (
313
+ self .CURRENT_STATE_EVENTS_STREAM_ORDERING_INDEX_UPDATE_NAME ,
314
+ index_name = "current_state_events_stream_ordering_idx" ,
315
+ table = "current_state_events" ,
316
+ columns = ["event_stream_ordering" ],
317
+ )
318
+ self .db_pool .updates .register_background_index_update (
319
+ self .ROOM_MEMBERSHIPS_STREAM_ORDERING_INDEX_UPDATE_NAME ,
320
+ index_name = "room_memberships_stream_ordering_idx" ,
321
+ table = "room_memberships" ,
322
+ columns = ["event_stream_ordering" ],
323
+ )
324
+ self .db_pool .updates .register_background_index_update (
325
+ self .LOCAL_CURRENT_MEMBERSHIP_STREAM_ORDERING_INDEX_UPDATE_NAME ,
326
+ index_name = "local_current_membership_stream_ordering_idx" ,
327
+ table = "local_current_membership" ,
328
+ columns = ["event_stream_ordering" ],
329
+ )
330
+
300
331
async def _background_deduplicate_state (
301
332
self , progress : dict , batch_size : int
302
333
) -> int :
0 commit comments