|
@@ -761,7 +761,7 @@ class Porter:
|
|
|
|
|
|
# Step 2. Set up sequences
|
|
|
#
|
|
|
- # We do this before porting the tables so that event if we fail half
|
|
|
+ # We do this before porting the tables so that even if we fail half
|
|
|
# way through the postgres DB always have sequences that are greater
|
|
|
# than their respective tables. If we don't then creating the
|
|
|
# `DataStore` object will fail due to the inconsistency.
|
|
@@ -769,6 +769,10 @@ class Porter:
|
|
|
await self._setup_state_group_id_seq()
|
|
|
await self._setup_user_id_seq()
|
|
|
await self._setup_events_stream_seqs()
|
|
|
+ await self._setup_sequence(
|
|
|
+ "un_partial_stated_event_stream_sequence",
|
|
|
+ ("un_partial_stated_event_stream",),
|
|
|
+ )
|
|
|
await self._setup_sequence(
|
|
|
"device_inbox_sequence", ("device_inbox", "device_federation_outbox")
|
|
|
)
|
|
@@ -779,6 +783,11 @@ class Porter:
|
|
|
await self._setup_sequence("receipts_sequence", ("receipts_linearized",))
|
|
|
await self._setup_sequence("presence_stream_sequence", ("presence_stream",))
|
|
|
await self._setup_auth_chain_sequence()
|
|
|
+ await self._setup_sequence(
|
|
|
+ "application_services_txn_id_seq",
|
|
|
+ ("application_services_txns",),
|
|
|
+ "txn_id",
|
|
|
+ )
|
|
|
|
|
|
# Step 3. Get tables.
|
|
|
self.progress.set_state("Fetching tables")
|
|
@@ -1083,7 +1092,10 @@ class Porter:
|
|
|
)
|
|
|
|
|
|
async def _setup_sequence(
|
|
|
- self, sequence_name: str, stream_id_tables: Iterable[str]
|
|
|
+ self,
|
|
|
+ sequence_name: str,
|
|
|
+ stream_id_tables: Iterable[str],
|
|
|
+ column_name: str = "stream_id",
|
|
|
) -> None:
|
|
|
"""Set a sequence to the correct value."""
|
|
|
current_stream_ids = []
|
|
@@ -1093,7 +1105,7 @@ class Porter:
|
|
|
await self.sqlite_store.db_pool.simple_select_one_onecol(
|
|
|
table=stream_id_table,
|
|
|
keyvalues={},
|
|
|
- retcol="COALESCE(MAX(stream_id), 1)",
|
|
|
+ retcol=f"COALESCE(MAX({column_name}), 1)",
|
|
|
allow_none=True,
|
|
|
),
|
|
|
)
|