diff options
author | Erik Johnston <erik@matrix.org> | 2015-11-18 15:54:50 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-11-18 15:54:50 +0000 |
commit | 162e2c1ce5171c5794f81f1668345bfe7caa6108 (patch) | |
tree | a96c2e14b26f8ec07153e56cb0ba0d22e90f5531 /scripts/synapse_port_db | |
parent | Merge branch 'hotfixes-v0.11.0-r1' (diff) | |
download | synapse-162e2c1ce5171c5794f81f1668345bfe7caa6108.tar.xz |
Fix database port script to work with new event_search table
Diffstat (limited to 'scripts/synapse_port_db')
-rwxr-xr-x | scripts/synapse_port_db | 55 |
1 files changed, 44 insertions, 11 deletions
diff --git a/scripts/synapse_port_db b/scripts/synapse_port_db index 62515997b1..c0da2af230 100755 --- a/scripts/synapse_port_db +++ b/scripts/synapse_port_db @@ -68,6 +68,7 @@ APPEND_ONLY_TABLES = [ "state_groups_state", "event_to_state_groups", "rejections", + "event_search", ] @@ -229,19 +230,51 @@ class Porter(object): if rows: next_chunk = rows[-1][0] + 1 - self._convert_rows(table, headers, rows) + if table == "event_search": + # We have to treat event_search differnetly 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): - self.postgres_store.insert_many_txn( - txn, table, headers[1:], rows - ) + rows_dict = [ + dict(zip(headers, row)) + for row in rows + ] + + txn.executemany(sql, [ + ( + row["event_id"], + row["room_id"], + 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) - self.postgres_store._simple_update_one_txn( - txn, - table="port_from_sqlite3", - keyvalues={"table_name": table}, - updatevalues={"rowid": next_chunk}, - ) + 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) |