@@ -1065,34 +1065,41 @@ async def _remove_deleted_devices_from_device_inbox(
10651065 The number of deleted rows
10661066 """
10671067
1068+ last_device_id = progress .get ("device_id" , "" )
1069+
10681070 def _remove_deleted_devices_from_device_inbox_txn (
10691071 txn : LoggingTransaction ,
10701072 ) -> int :
10711073
10721074 sql = """
1073- SELECT user_id, device_id, stream_id
1075+ SELECT device_id
10741076 FROM device_inbox
10751077 WHERE device_id
10761078 NOT IN (SELECT device_id FROM devices)
1079+ AND device_id > ?
1080+ ORDER BY device_id ASC
10771081 LIMIT ?;
10781082 """
10791083
1080- txn .execute (sql , (batch_size , ))
1081- rows = txn .fetchall ()
1084+ txn .execute (sql , (last_device_id , batch_size ))
1085+ device_ids_to_delete = txn .fetchall ()
10821086
1083- for row in rows :
1084- self .db_pool .simple_delete_txn (
1085- txn ,
1086- "device_inbox" ,
1087- {"user_id" : row [0 ], "device_id" : row [1 ], "stream_id" : row [2 ]},
1088- )
1087+ count_deleted_devices = self .db_pool .simple_delete_many_txn (
1088+ txn ,
1089+ "device_inbox" ,
1090+ column = "device_id" ,
1091+ values = device_ids_to_delete ,
1092+ keyvalues = {},
1093+ )
10891094
1090- if rows :
1095+ if device_ids_to_delete :
10911096 self .db_pool .updates ._background_update_progress_txn (
1092- txn , "remove_deleted_devices_from_device_inbox" , row
1097+ txn ,
1098+ "remove_deleted_devices_from_device_inbox" ,
1099+ {"device_id" : device_ids_to_delete [- 1 ]},
10931100 )
10941101
1095- return len ( rows )
1102+ return count_deleted_devices
10961103
10971104 number_deleted = await self .db_pool .runInteraction (
10981105 "_remove_deleted_devices_from_device_inbox" ,
0 commit comments