diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-02-03 22:57:33 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-02-03 22:59:45 +0000 |
commit | 4eeae7ad657729eb8c2765da6fb40fc983c740f7 (patch) | |
tree | 2a660d4fe6e0485b7c6a1c557a539b9c101682c0 /synapse/storage/search.py | |
parent | Merge branch 'develop' into matthew/gin_work_mem (diff) | |
download | synapse-4eeae7ad657729eb8c2765da6fb40fc983c740f7.tar.xz |
Move store_event_search_txn to SearchStore
... as a precursor to making event storing and doing the bg update share some code.
Diffstat (limited to '')
-rw-r--r-- | synapse/storage/search.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/synapse/storage/search.py b/synapse/storage/search.py index f52f3c8592..205e8d0017 100644 --- a/synapse/storage/search.py +++ b/synapse/storage/search.py @@ -246,6 +246,41 @@ class SearchStore(BackgroundUpdateStore): defer.returnValue(num_rows) + def store_event_search_txn(self, txn, event, key, value): + """Add event to the search table + + Args: + txn (cursor): + event (EventBase): + key (str): + value (str): + """ + if isinstance(self.database_engine, PostgresEngine): + txn.execute("SET work_mem='256kB'") + sql = ( + "INSERT INTO event_search" + " (event_id, room_id, key, vector, stream_ordering, origin_server_ts)" + " VALUES (?,?,?,to_tsvector('english', ?),?,?)" + ) + txn.execute( + sql, + ( + event.event_id, event.room_id, key, value, + event.internal_metadata.stream_ordering, + event.origin_server_ts, + ) + ) + txn.execute("RESET work_mem") + elif isinstance(self.database_engine, Sqlite3Engine): + sql = ( + "INSERT INTO event_search (event_id, room_id, key, value)" + " VALUES (?,?,?,?)" + ) + txn.execute(sql, (event.event_id, event.room_id, key, value,)) + else: + # This should be unreachable. + raise Exception("Unrecognized database engine") + @defer.inlineCallbacks def search_msgs(self, room_ids, search_term, keys): """Performs a full text search over events with given keys. |