|
|
@@ -261,6 +261,16 @@ class StateBackgroundUpdateStore(StateGroupBackgroundUpdateStore): |
|
|
|
STATE_GROUPS_ROOM_INDEX_UPDATE_NAME = "state_groups_room_id_idx" |
|
|
|
STATE_GROUP_EDGES_UNIQUE_INDEX_UPDATE_NAME = "state_group_edges_unique_idx" |
|
|
|
|
|
|
|
CURRENT_STATE_EVENTS_STREAM_ORDERING_INDEX_UPDATE_NAME = ( |
|
|
|
"current_state_events_stream_ordering_idx" |
|
|
|
) |
|
|
|
ROOM_MEMBERSHIPS_STREAM_ORDERING_INDEX_UPDATE_NAME = ( |
|
|
|
"room_memberships_stream_ordering_idx" |
|
|
|
) |
|
|
|
LOCAL_CURRENT_MEMBERSHIP_STREAM_ORDERING_INDEX_UPDATE_NAME = ( |
|
|
|
"local_current_membership_stream_ordering_idx" |
|
|
|
) |
|
|
|
|
|
|
|
def __init__( |
|
|
|
self, |
|
|
|
database: DatabasePool, |
|
|
@@ -297,6 +307,27 @@ class StateBackgroundUpdateStore(StateGroupBackgroundUpdateStore): |
|
|
|
replaces_index="state_group_edges_idx", |
|
|
|
) |
|
|
|
|
|
|
|
# These indices are needed to validate the foreign key constraint |
|
|
|
# when events are deleted. |
|
|
|
self.db_pool.updates.register_background_index_update( |
|
|
|
self.CURRENT_STATE_EVENTS_STREAM_ORDERING_INDEX_UPDATE_NAME, |
|
|
|
index_name="current_state_events_stream_ordering_idx", |
|
|
|
table="current_state_events", |
|
|
|
columns=["event_stream_ordering"], |
|
|
|
) |
|
|
|
self.db_pool.updates.register_background_index_update( |
|
|
|
self.ROOM_MEMBERSHIPS_STREAM_ORDERING_INDEX_UPDATE_NAME, |
|
|
|
index_name="room_memberships_stream_ordering_idx", |
|
|
|
table="room_memberships", |
|
|
|
columns=["event_stream_ordering"], |
|
|
|
) |
|
|
|
self.db_pool.updates.register_background_index_update( |
|
|
|
self.LOCAL_CURRENT_MEMBERSHIP_STREAM_ORDERING_INDEX_UPDATE_NAME, |
|
|
|
index_name="local_current_membership_stream_ordering_idx", |
|
|
|
table="local_current_membership", |
|
|
|
columns=["event_stream_ordering"], |
|
|
|
) |
|
|
|
|
|
|
|
async def _background_deduplicate_state( |
|
|
|
self, progress: dict, batch_size: int |
|
|
|
) -> int: |
|
|
|