Don't create event_search index on sqlite

... because the table is virtual
This commit is contained in:
Richard van der Hoff 2017-05-11 12:46:55 +01:00
parent 114f290947
commit 34194aaff7
2 changed files with 11 additions and 3 deletions

View File

@ -211,7 +211,8 @@ class BackgroundUpdateStore(SQLBaseStore):
def register_background_index_update(self, update_name, index_name,
table, columns, where_clause=None,
unique=False):
unique=False,
psql_only=False):
"""Helper for store classes to do a background index addition
To use:
@ -227,6 +228,9 @@ class BackgroundUpdateStore(SQLBaseStore):
index_name (str): name of index to add
table (str): table to add index to
columns (list[str]): columns/expressions to include in index
unique (bool): true to make a UNIQUE index
psql_only: true to only create this index on psql databases (useful
for virtual sqlite tables)
"""
def create_index_psql(conn):
@ -288,11 +292,14 @@ class BackgroundUpdateStore(SQLBaseStore):
if isinstance(self.database_engine, engines.PostgresEngine):
runner = create_index_psql
elif psql_only:
runner = None
else:
runner = create_index_sqlite
@defer.inlineCallbacks
def updater(progress, batch_size):
if runner is not None:
logger.info("Adding index %s to %s", index_name, table)
yield self.runWithConnection(runner)
yield self._end_background_update(update_name)

View File

@ -216,6 +216,7 @@ class EventsStore(SQLBaseStore):
table="event_search",
columns=["event_id"],
unique=True,
psql_only=True,
)
self._event_persist_queue = _EventPeristenceQueue()