Merge pull request #387 from matrix-org/erikj/fix_port_script
Fix database port script to work with new event_search table
This commit is contained in:
commit
e5d91b8e57
|
@ -68,6 +68,7 @@ APPEND_ONLY_TABLES = [
|
||||||
"state_groups_state",
|
"state_groups_state",
|
||||||
"event_to_state_groups",
|
"event_to_state_groups",
|
||||||
"rejections",
|
"rejections",
|
||||||
|
"event_search",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -229,19 +230,51 @@ class Porter(object):
|
||||||
if rows:
|
if rows:
|
||||||
next_chunk = rows[-1][0] + 1
|
next_chunk = rows[-1][0] + 1
|
||||||
|
|
||||||
self._convert_rows(table, headers, rows)
|
if table == "event_search":
|
||||||
|
# We have to treat event_search differently since it has a
|
||||||
|
# different structure in the two different databases.
|
||||||
|
def insert(txn):
|
||||||
|
sql = (
|
||||||
|
"INSERT INTO event_search (event_id, room_id, key, sender, vector)"
|
||||||
|
" VALUES (?,?,?,?,to_tsvector('english', ?))"
|
||||||
|
)
|
||||||
|
|
||||||
def insert(txn):
|
rows_dict = [
|
||||||
self.postgres_store.insert_many_txn(
|
dict(zip(headers, row))
|
||||||
txn, table, headers[1:], rows
|
for row in rows
|
||||||
)
|
]
|
||||||
|
|
||||||
self.postgres_store._simple_update_one_txn(
|
txn.executemany(sql, [
|
||||||
txn,
|
(
|
||||||
table="port_from_sqlite3",
|
row["event_id"],
|
||||||
keyvalues={"table_name": table},
|
row["room_id"],
|
||||||
updatevalues={"rowid": next_chunk},
|
row["key"],
|
||||||
)
|
row["sender"],
|
||||||
|
row["value"],
|
||||||
|
)
|
||||||
|
for row in rows_dict
|
||||||
|
])
|
||||||
|
|
||||||
|
self.postgres_store._simple_update_one_txn(
|
||||||
|
txn,
|
||||||
|
table="port_from_sqlite3",
|
||||||
|
keyvalues={"table_name": table},
|
||||||
|
updatevalues={"rowid": next_chunk},
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self._convert_rows(table, headers, rows)
|
||||||
|
|
||||||
|
def insert(txn):
|
||||||
|
self.postgres_store.insert_many_txn(
|
||||||
|
txn, table, headers[1:], rows
|
||||||
|
)
|
||||||
|
|
||||||
|
self.postgres_store._simple_update_one_txn(
|
||||||
|
txn,
|
||||||
|
table="port_from_sqlite3",
|
||||||
|
keyvalues={"table_name": table},
|
||||||
|
updatevalues={"rowid": next_chunk},
|
||||||
|
)
|
||||||
|
|
||||||
yield self.postgres_store.execute(insert)
|
yield self.postgres_store.execute(insert)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue